从附图中可以看出,我有一个有几个孩子的活动游戏对象,但是下面的简单策略返回null,表明无法找到或到达它。
我做错了什么?我只需抓住这个关节并对其进行一些修改......
AppendText
起初,我只使用void Start()
{
GameObject brad = GameObject.Find("Brad");
GameObject hip = brad.transform.Find("Brad/ChrBrad/CharacterRoot/JtRoot/JtPelvis").gameObject;
}
所以我认为这可能是问题所在,但即使在指定完整路径之后,它仍然是不可取的?!
答案 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;