首页 > 解决方案 > 有人对 C# 中的基本计时器有一个好主意吗?

问题描述

有没有人有一个计时器的好主意?我试过使用秒表,但我一定做错了什么,我只是希望一个 int 值每秒上升一次,并且必须能够重置它。

这是我失败的一段代码:

//Timer systemet
Stopwatch Timer = new Stopwatch();
Timer.Start();

TimeSpan ts = Timer.Elapsed;
double seconds = ts.Seconds;

//interval
if(seconds >= 8)
{
    Text = Text + 1;
    Timer.Stop();
}

标签: c#xnamonogamestopwatch

解决方案


我看到你用 XNA 和 MonoGame 标记了这个问题。通常,在这样的游戏框架中,您不会使用典型的计时器和秒表。

在 MonoGame 中,您通常会执行以下操作:

private float _delay = 1.0f;
private int _value = 0;

protected override void Update(GameTime gameTime)
{
    var deltaSeconds = (float) gameTime.ElapsedGameTime.TotalSeconds;

    // subtract the "game time" from your timer
    _delay -= deltaSeconds;

    if(_delay <= 0)
    {
        _value += 1;    // increment your value or whatever
        _delay = 1.0f;  // reset the timer
    }
}

当然,这绝对是最简单的例子。您可以变得更花哨并创建自定义class来做同样的事情。这样您就可以创建多个计时器。MonoGame.Extended中有这样的示例,欢迎您从中借用代码。


推荐阅读