我在 Unity 2D 中的碰撞器 2D 中遇到空引用异常

问题描述 投票:0回答:1

所以我正在制作一款飞翔的小鸟游戏,但有一个例外,即玩家只有撞到后墙才会死亡。如果他撞到了墙,它应该访问我的 GameManager(空对象)内的一个函数,该函数会重新加载场景。

public void OnTriggerEnter2D(Collider2D Doom)
    {
        Debug.Log("Collider works");
        GetComponent<GameManager>().EndGame();
    }

在这种情况下,末日就是后墙。当我运行游戏时,出现错误 NullReferenceException: 对象引用未设置到对象的实例。

你能帮我吗?

unity-game-engine nullreferenceexception flappy-bird-clone
1个回答
0
投票

当您指向空值时,会发生 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 的信息,您可以观看 此视频,它通过示例详细解释了错误,希望对您有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.