name | 要查找的 GameObject 的名称。 |
查找并返回指定名称的 GameObject。
仅返回活动 GameObject。如果不存在名称为 name
的 GameObject,则返回 null
。如果 name
包含 /
字符,它将像路径名一样遍历层次结构。
出于性能原因,建议不要每帧都使用此函数。相反,在启动时将结果缓存到成员变量中,或者使用 GameObject.FindWithTag。
如果游戏以多个场景运行,则 Find
会在所有场景中搜索。
要查找子 GameObject,通常使用 Transform.Find 更容易。
using UnityEngine; using System.Collections;
// This returns the GameObject named Hand in one of the Scenes.
public class ExampleClass : MonoBehaviour { public GameObject hand;
void Example() { // This returns the GameObject named Hand. hand = GameObject.Find("Hand");
// This returns the GameObject named Hand. // Hand must not have a parent in the Hierarchy view. hand = GameObject.Find("/Hand");
// This returns the GameObject named Hand, // which is a child of Arm > Monster. // Monster must not have a parent in the Hierarchy view. hand = GameObject.Find("/Monster/Arm/Hand");
// This returns the GameObject named Hand, // which is a child of Arm > Monster. hand = GameObject.Find("Monster/Arm/Hand"); } }
GameObject.Find
用于在加载时自动连接到其他对象的引用;例如,在 MonoBehaviour.Awake 或 MonoBehaviour.Start 内部。
一种常见的模式是在 MonoBehaviour.Start 内部将 GameObject 分配给变量,并在 MonoBehaviour.Update 中使用该变量。
using UnityEngine; using System.Collections;
// Find the GameObject named Hand and rotate it every frame
public class ExampleClass : MonoBehaviour { private GameObject hand;
void Start() { hand = GameObject.Find("/Monster/Arm/Hand"); }
void Update() { hand.transform.Rotate(0, 100 * Time.deltaTime, 0); } }
其他资源:GameObject.FineObjectsWithTag