GetComponent返回null

时间:2016-11-30 21:21:48

标签: c# unity3d

在Unity 5.4 / 5.5中,由于某些原因,我遇到GetComponent没有返回GameObject的CharacterController的问题。重新启动Unity后,它再次运行。

enter image description here

_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正在返回游戏对象。

1 个答案:

答案 0 :(得分:4)

而不是使用GameObject.Find("Frog")尝试使用GameObject.FindWithTag("Frog")并将标记“Frog”添加到青蛙对象。

你发生这种情况的原因是某种程度上,某个名为“Frog”的第二个对象被添加到场景中。当发生这种情况时,Unity将随机选择它找到的两个对象中的一个,这将导致它有时工作,但不会在其他时间工作。

通过切换到标签,您可以更有可能唯一地识别对象。