我遵循了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();
}
}
}
我希望我的游戏在玩家撞到障碍物或另一辆汽车后重启几秒钟,但是游戏暂停了,并告诉我我出错了。
答案 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();