获取对象/组件

一、 获取对象

在 Unity 中获取游戏对象有多种方式,以下是一些常用的获取游戏对象的方式:

1 使用名称获取

  • 使用 GameObject.Find() 方法按照名称获取游戏对象。这个方法会在场景中查找并返回名称
    匹配的第一个游戏对象。名称中可以添加上路径。
// 按照名称获取名为 "Cube" 的游戏对象
GameObject cube = GameObject.Find("Cube");

2 按标签获取

  • 使用 GameObject.FindGameObjectsWithTag() 方法按照标签获取游戏对象。这个方法会返
    回所有标记为指定标签的游戏对象数组。
// 获取所有标记为 "Enemy" 的游戏对象
GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy");

3 通过变量引用获取

  • 在脚本中声明公共变量并在 Unity 编辑器中拖拽关联游戏对象到这些变量上,以便直接访问。
public GameObject player; // 在脚本中声明一个公共游戏对象变量
void Start()
{
	// 在 Unity 编辑器中将 Player 游戏对象拖拽到 Player 变量上
	player.GetComponent<PlayerController>().Move(); // 通过变量引用直接访问游戏对象及其组件
}

4 通过遍历获取

  • 使用 GameObject.FindObjectsOfType<T>() 方法获取场景中所有指定类型的游戏对象数
    组。
// 获取场景中所有类型为 Rigidbody 的游戏对象数组
Rigidbody[] rigidbodies = GameObject.FindObjectsOfType<Rigidbody>();

以上除了变量引用物体,其它方式都不支持隐藏物体的查找。如需获取隐藏物体,使用transform.find函数

二、组件获取

在 Unity 中获取游戏对象的组件(Component)有多种方式,以下是一些常用的获取游戏组件的方式:

1 在同一对象上获取组件

  • 使用 GetComponent<T>() 方法在同一游戏对象上获取指定类型的组件。
// 获取当前游戏对象上的 Rigidbody 组件
Rigidbody rb = GetComponent<Rigidbody>();

2 在其他对象上获取组件

  • 使用 GetComponentInChildren<T>() 或 GetComponentInParent<T>() 方法在子对象或父对象中查找并获取指定类型的组件。
// 获取当前游戏对象的子对象中的脚本组件
MyScript myScript = GetComponentInChildren<MyScript>();
// 获取当前游戏对象的父对象中的碰撞体组件
Collider parentCollider = GetComponentInParent<Collider>();

3 通过变量引用获取

  • 类似于获取游戏对象,你也可以在脚本中声明公共变量并在 Unity 编辑器中拖拽关联组件到这些变量上,以便直接访问。
public Rigidbody rb; // 在脚本中声明一个公共刚体变量
void Start()
{
	rb.AddForce(Vector3.up * 10f); // 通过变量引用直接访问组件
}

4 通过GetComponent()方法获取

  • 结合获取游戏对象方式,也可以在获得游戏对象的同时获取指定类型的组件。
// 获取名为 "Cube" 的游戏对象,并尝试获取 Rigidbody 组件
GameObject cube = GameObject.Find("Cube");
Rigidbody cubeRb = cube.GetComponent<Rigidbody>();

“您的支持是我持续分享的动力”

微信收款码
微信
支付宝收款码
支付宝

目录