0

所以我现在有一个游戏正在运行,它使用“e”在:private void OnUpdate(object sender, GameTimerEventArgs e) 来保持世界速度更新,但是我不知道如何在我重新启动游戏时重置这个 GameTimerEventArgs (实际上没有退出游戏)

这就是我使用它的方式

  worldSpeed = (float)(3 + e.TotalTime.TotalMilliseconds / 10000);

建议?

4

1 回答 1

2

查询GameTimerEventArgs.ElapsedTime每一帧。忽略TotalTime

在变量中累积经过的时间。这样,您可以在重新启动游戏时将变量重置为零。您还可以通过在暂停时不累积时间来实现暂停。

就您而言,随着游戏玩法的进行,您似乎正在增加worldSpeed。因此,与其累积运行时间,不如将更改累积到worldSpeed如下所示:

if(!paused)
{
    worldSpeed += (float)(e.ElapsedTime.TotalMilliseconds / 10000f);
}

并在您重新启动时设置worldSpeed为 3。

于 2012-04-23T04:17:27.277 回答