name | The name of the GameObject to find. |
Finds and returns a GameObject with the specified name.
Only returns active GameObjects. Returns null
if no GameObject with name
exists. If name
contains a /
character, it traverses the hierarchy like a path name.
For performance reasons, it is recommended to not use this function every frame. Instead, cache the result in a member variable at startup, or use GameObject.FindWithTag.
If the game is running with multiple scenes then Find
will search in all of them.
To find a child GameObject, it is often easier to use 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
is useful for automatically connecting references to other objects at load time; for example, inside MonoBehaviour.Awake or MonoBehaviour.Start.
A common pattern is to assign a GameObject to a variable inside MonoBehaviour.Start, and use the variable in 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); } }
Additional resources: GameObject.FineObjectsWithTag