未找到活动游戏对象

时间:2015-12-07 15:23:07

标签: unity3d

从附图中可以看出,我有一个有几个孩子的活动游戏对象,但是下面的简单策略返回null,表明无法找到或到达它。

我做错了什么?我只需抓住这个关节并对其进行一些修改......

AppendText

起初,我只使用void Start() { GameObject brad = GameObject.Find("Brad"); GameObject hip = brad.transform.Find("Brad/ChrBrad/CharacterRoot/JtRoot/JtPelvis").gameObject; } 所以我认为这可能是问题所在,但即使在指定完整路径之后,它仍然是不可取的?!

enter image description here

1 个答案:

答案 0 :(得分:3)

1)Transform.Find(不要与GameObject.Find混淆)只搜索一个级别(不是孙子级),这就是brad.transform.Find("JtPelvis").gameObject无效的原因;

2)你可以通过完整路径找到“JtPelvis”,只省略“Brad”:

GameObject hip = brad.transform.Find("ChrBrad/CharacterRoot/JtRoot/JtPelvis").gameObject;

3)或者,您可以随时编写一些自定义搜索功能,例如:

Transform FindChildNamed(Transform t, string name) {
    if (t.name == name) return t;
    foreach (Transform t1 in t) {
        return FindChildNamed(t1, name);
    }
    return null;
}
//....
GameObject hip = FindChildNamed(brad.transform, "JtPelvis").gameObject;