我希望每次调用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;
。它既快捷又简单。