如何在每次调用End Game函数时添加一个数字作为变量



我希望每次调用EndGame时变量DC增加一个,但每次我死亡时,它都会记录一个,而不是每次增加。

bool gameHasEnded = false;
public float restartDelay = 1f;
int DC;

public void EndGame ()
{
DC = DC + 1;
Debug.Log(DC);
if (gameHasEnded == false) 
{
gameHasEnded = true;
Invoke("Restart", restartDelay);
}        
}  
void Restart ()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}

}

所以这里的问题是DC是一个实例变量。这意味着每次在运行时(即加载场景时(创建此脚本时,都会将其设置为默认值(此处为0(。

由于每次调用EndGame时游戏都会结束,因此DC会不断重置。有几种方法可以解决这个问题
最快的方法就是将DC标记为static。这使它成为一个类变量,而不是一个实例变量,并且它将在场景更改中持续存在。

您可以做的另一件事是将此脚本标记为DontDestroyOnLoad。我认为这更危险,因为它可能导致在后续场景中出现重复对象。它完全按照它说的做,你只需要把它传给游戏对象。

其他方式包括可编写脚本的对象和玩家偏好
对于这种情况,我建议你试用static int DC;。它既快捷又简单。

最新更新