【发布时间】:2015-01-10 01:30:29
【问题描述】:
我想为我的 Unity 3D 游戏创建一个计时器。
我已经尝试使用 Time.time,但如果不重置整个游戏,我将无法重置计时器。 timeSinceLevelLoad 对我也不起作用,因为需要重新加载关卡。
我尝试在 FixedUpdate 中使用 Time.deltaTime,但我觉得时间不对。我无法重新加载游戏或关卡的原因是我将我的机器状态设置为只有一个场景:
switch (currentState) {
case GameStates.START:{
player.position = startPositionPlayer;
currentState = GameStates.WAITGAME;
timeScore.renderer.enabled = false;
}
break;
case GameStates.WAITGAME:{
player.position = startPositionPlayer;
timeScore.renderer.enabled = false;
}
break;
case GameStates.INGAME:{
time = Time.time;
timeScore.text = time.ToString();
}
break;
case GameStates.GAMEOVER:{
currentState = GameStates.RANKING;
player.position = startPositionPlayer;
enemy.position = startPositionEnemy;
timeScore.renderer.enabled = false;
}
break;
case GameStates.RANKING:{
player.position = startPositionPlayer;
enemy.position = startPositionEnemy;
timeScore.renderer.enabled = false;
}
break;
}
}
所以我的整个游戏在一个场景中运行。该函数用于使用 GameStates.INGAME 重启游戏:
public void StartGame(){
time = 0f;
timeScore.renderer.enabled = true;
currentState = GameStates.INGAME;
}
我的问题是:如何创建一个无需重新加载游戏、场景或关卡即可重置的渐进式计时器?
【问题讨论】: