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

Transform.Find

建议更改

成功!

感谢您帮助我们改进 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们会阅读用户提出的每一项更改建议,并在适用的情况下进行更新。

关闭

提交失败

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

关闭

取消

切换到手册

声明

public Transform Find(string n);

参数

n 搜索字符串,可以是直接子项的名称,也可以是查找后代的层次结构路径。

返回值

Transform 找到的子 Transform。如果未找到名称匹配的子项,则为 Null。

描述

按名称n查找子项并返回。

如果找不到名称为n的子项,则返回 null。如果n包含 '/' 字符,它将像路径名一样访问层次结构中的 Transform。

注意: 如果 GameObject 的名称中包含 '/',则Find 无法正常工作。
注意: Find 不会在 Transform 层次结构中递归下降。
注意: Find 可以找到禁用 GameObject 的 Transform。

using UnityEngine;
using System.Collections;

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

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

//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 搜索 GameObject 的结果。每个 GameObject 的名称都在Find 中使用。这就是为什么层次结构同一级别的两个 GameObject 被找到并报告的原因。


一个带有三个子项的 GameObject。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 { //Find() does not find sphere3 Debug.Log("Did not find: " + sph);

//But we can access it with '/' character or by using GetChild() Transform newresult; newresult = gameObject.transform.Find("sphere2/sphere3");

if (newresult) { Debug.Log("But now found:" + sph); } } } } }