版本: Unity 6 (6000.0)
语言英语
  • C#

GameObject.Find

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每项建议,并在适用时进行更新。

关闭

提交失败

由于某种原因,您的建议修改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public static GameObject Find(string name);

参数

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.AwakeMonoBehaviour.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