在Unity 5.4 / 5.5中,由于某些原因,我遇到GetComponent没有返回GameObject的CharacterController的问题。重新启动Unity后,它再次运行。
_MAIN运行此脚本:
private GameObject frog;
private CharacterController controller;
void Start () {
frog = GameObject.Find ("Frog");
controller = frog.GetComponent<CharacterController> ();
Debug.Log(controller); // returns null
}
void Update () {
if (controller.isGrounded) {
// error is thrown
}
}
在更新中引用controller
后,我收到错误:
MissingComponentException:没有&#39; CharacterController&#39;附在&#34; Frog&#34;游戏对象,
仅供参考,frog
正在返回游戏对象。
答案 0 :(得分:4)
而不是使用GameObject.Find("Frog")
尝试使用GameObject.FindWithTag("Frog")
并将标记“Frog”添加到青蛙对象。
你发生这种情况的原因是某种程度上,某个名为“Frog”的第二个对象被添加到场景中。当发生这种情况时,Unity将随机选择它找到的两个对象中的一个,这将导致它有时工作,但不会在其他时间工作。
通过切换到标签,您可以更有可能唯一地识别对象。