所以我现在有一个游戏正在运行,它使用“e”在:private void OnUpdate(object sender, GameTimerEventArgs e) 来保持世界速度更新,但是我不知道如何在我重新启动游戏时重置这个 GameTimerEventArgs (实际上没有退出游戏)
这就是我使用它的方式
worldSpeed = (float)(3 + e.TotalTime.TotalMilliseconds / 10000);
建议?
所以我现在有一个游戏正在运行,它使用“e”在:private void OnUpdate(object sender, GameTimerEventArgs e) 来保持世界速度更新,但是我不知道如何在我重新启动游戏时重置这个 GameTimerEventArgs (实际上没有退出游戏)
这就是我使用它的方式
worldSpeed = (float)(3 + e.TotalTime.TotalMilliseconds / 10000);
建议?
查询GameTimerEventArgs.ElapsedTime
每一帧。忽略TotalTime
。
在变量中累积经过的时间。这样,您可以在重新启动游戏时将变量重置为零。您还可以通过在暂停时不累积时间来实现暂停。
就您而言,随着游戏玩法的进行,您似乎正在增加worldSpeed
。因此,与其累积运行时间,不如将更改累积到worldSpeed
如下所示:
if(!paused)
{
worldSpeed += (float)(e.ElapsedTime.TotalMilliseconds / 10000f);
}
并在您重新启动时设置worldSpeed
为 3。