代码中显示“ NullReferenceException”的简单错误

时间:2019-07-27 19:15:11

标签: c# unity3d

我遵循了Brackeys的“如何制作视频游戏”教程,我做了一些改动,但仍然照搬了他所做的大部分工作。在碰撞时复制了他的代码后(第9集),当我的玩家撞到另一辆车上并说“空引用异常”时,我得到了一个错误。

我尝试在线查找解决方案,并确保我做对了,但是这一切都令人困惑和迷惑。

using UnityEngine;

public class ColiisionScript : MonoBehaviour
{

    public forward movement;

    void OnCollisionEnter(UnityEngine.Collision collisionInfo)
    {
        if (collisionInfo.gameObject.tag == "StrangerThings")
        {
            GetComponent<forward>().enabled = false;                         
            FindObjectOfType<GameManager>().EndGame(); 
        }
    }
}

我希望我的游戏在玩家撞到障碍物或另一辆汽车后重启几秒钟,但是游戏暂停了,并告诉我我出错了。

1 个答案:

答案 0 :(得分:1)

分别将GetComponent和FindObjectOfType调用分别放入Forward和GameManager变量中。

forward f = GetComponent<forward>();
GameManager gm = FindObjectOfType<GameManager>();

然后在调用函数之前检查它们是否具有值。

if(f != null)
  f.enabled = false;

if(gm != null)
  gm.EndGame();

//or a trick to shorten the code ?

gm?.EndGame();