【发布时间】:2019-07-28 03:50:06
【问题描述】:
我按照 Brackeys 的“如何制作视频游戏”教程进行了一些更改,但仍然复制了他所做的大部分内容。在我复制了他的碰撞代码后(第 9 集),当我的玩家撞上另一辆车时,我收到了一个错误,提示“Null Reference Exception”。
我尝试在网上查找解决方案并确保我做对了,但是这一切都令人困惑和 idk。
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();
}
}
}
我希望我的游戏在玩家撞到障碍物或另一辆车后几秒钟重新开始,但游戏暂停并告诉我出现错误。
【问题讨论】:
-
GetComponent 和 FindObjectOfType 都可能找不到任何符合其条件的内容。此时您编写了 null.enabled 或 null.EndGame() 虽然 null 是正确的类型,但在不是实例的对象上调用实例函数仍然不是一个非常明智的命令。
-
这个错误发生在哪一行?以及您采取了哪些步骤来排除故障?你做了研究很酷,但你做了什么调试?你确认你得到空引用的对象确实存在吗?