所以我正在制作一款飞翔的小鸟游戏,但有一个例外,即玩家只有撞到后墙才会死亡。如果他撞到了墙,它应该访问我的 GameManager(空对象)内的一个函数,该函数会重新加载场景。
public void OnTriggerEnter2D(Collider2D Doom)
{
Debug.Log("Collider works");
GetComponent<GameManager>().EndGame();
}
在这种情况下,末日就是后墙。当我运行游戏时,出现错误 NullReferenceException: 对象引用未设置到对象的实例。
你能帮我吗?
当您指向空值时,会发生 NullReferenceException。在您的情况下, GetComponent().EndGame() 为 null。
就像 imserhane 提到的那样,当您使用 GetComponent<>() 时,您试图从该脚本所附加的游戏对象中检索组件。在您的情况下,这两个脚本可能附加到不同的游戏对象。
你可以做的是使用 FindObjectOfType,就像 Iggy 提到的那样。
这就是你要做的。
GameManager gameManager;
// Save a reference to your GameManager
void Awake()
{
gameManager = FindObjectOfType<GameManager>();
}
// Modify your code like this
public void OnTriggerEnter2D(Collider2D Doom)
{
Debug.Log("Collider works");
gameManager.EndGame();
}
如果您想了解更多有关 NullReferenceException 的信息,您可以观看 此视频,它通过示例详细解释了错误,希望对您有所帮助!