我怎样才能找到儿童游戏对象?

13 unity-game-engine gameobject

我想说些像......

Gameobject.find(child gameobject of specific parent Gameobject)
Run Code Online (Sandbox Code Playgroud)

谁能帮我.谢谢!

Jay*_*ama 30

GameObject.Find将在场景中搜索游戏对象.要从父级搜索游戏对象,请使用Transform.

有两种方法:

  1. transform.Find("childname")
  2. transform.FindChild("childname")

第二个选项已弃用但仍可正常使用,因此您最好使用第一个选项.

  • 这是因为`Transform.find("childname")`返回一种Transform.如果你想获得游戏对象,只需在末尾添加.gameObject:`Transform.find("childname").gameObject` (4认同)
  • 当我尝试这个code.i时发现一个错误,如..."无法将类型`UnityEngine.Transform'转换为`UnityEngine.GameObject" (3认同)

小智 7

如果您在层次结构中寻找游戏对象,它必须类似于:

transform.Find("head/eyes")
transform.FindChild("head/eyes")
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你!“Find()”调用为我返回 NULL,我在 Unity 文档中看到它默认情况下不会遍历层次结构(以获取子子级)。使用正斜杠可以做到这一点(例如,“ParentName/ChildName/GrandchildName”可获取“GrandchildName”)。 (2认同)

小智 5

修复 Jay Kazama 的答案。正确答案是:

  1. transform.Find ("childname")
  2. transform.FindChild ("childname")

使用小 t(属性变换,而不是类变换)。


Jun*_*min 5

对于上面注明transform.FindChild("childname")为“答案”的答案,这是为了通知您该答案transform.FindChild("childname")已被弃用。

使用这个,这将按预期工作

transform.Find("childName");
Run Code Online (Sandbox Code Playgroud)

如果您想按名称查找游戏对象的子对象,请使用它,

GameObject head = HeadPanel;    // just for reference
head.transorm.Find("childName").gameObject;
Run Code Online (Sandbox Code Playgroud)