Version: 2020.2
public Transform Find (string n);

参数

n 要查找的子项的名称。

返回

Transform 如果找到子项,则返回该子变换;否则返回 null。

描述

n 查找子项,然后返回它。

如果未找到具有 n 的子项,则返回 null。 如果 n 包含“/”字符,它将像访问路径名称那样访问层级视图中的变换。

__注意:__.Find 不在变换层级视图中执行递归向下查找。

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { public GameObject player; public GameObject gun; public Transform ammo;

//Invoked when a button is clicked. public void Example() { //Finds and assigns the child of the player named "Gun". gun = player.transform.Find("Gun").gameObject;

//If the child was found. if (gun != null) { //Find the child named "ammo" of the gameobject "magazine" (magazine is a child of "gun"). ammo = gun.transform.Find("magazine/ammo"); } else Debug.Log("No child with the name 'Gun' attached to the player"); } }

如前所述,Find 不会在 Transform 层级视图中向下查找。Find 只会搜索给定的子项列表,从而查找名为 Transform 的子项。以下示例显示了 Find 的游戏对象搜索结果。在 Find 中使用每个游戏对象的名称。这就是为什么在层级视图的相同级别中找到并报告两个游戏对象的原因。


附带三个子项的一个游戏对象。Find() 不能找到第三个子项。

// ExampleClass has a GameObject with three spheres attached.
// Two of these are children of the GameObject.  The third
// transform, sphere3, is a child of sphere2.  Find() does
// not find this child.

using UnityEngine;

public class ExampleClass : MonoBehaviour { void Start() { Transform result;

for (int i = 1; i < 4; i++) { string sph;

sph = "sphere" + i.ToString(); result = gameObject.transform.Find(sph);

if (result) { Debug.Log("Found: " + sph); } else { Debug.Log("Did not find: " + sph); } } } }