GameTime 始终为 0 - MonoGame (XNA) - C#

GameTime is always 0 - MonoGame (XNA) - C#

目前,我的 sprites 循环的速度与 MonoGame 循环其代码的速度相同。我想通过使用 GameTime 创建延迟来减慢此过程。然而,它从未奏效,所以我决定使用 debug.WriteLine() 来检查 GameTime 是否更新。从来没有。

abstract class Entity
{
    protected GameTime _gameTime;
    public TimeSpan timer { get; set; }

    public Entity()
    {
        _gameTime = new GameTime();
        timer = _gameTime.TotalGameTime;
    }

    public void UpdateTimer()
    {
        timer += _gameTime.TotalGameTime;
        Debug.WriteLine("Timer: " + timer.Milliseconds);
    }
}

UpdateTimer() 在游戏循环中连续运行,但总是在调试输出中写入“0”。

我做错了什么?或者有更好的方法吗?

你的 _gameTime0 因为它刚刚初始化,就是这样。

您的游戏 class(继承自 Game)获得了一个更新方法,参数类型为 GameTime。此参数是您当前的帧时间。所以你的 UpdateTimer 也应该有一个 GameTime 参数并且应该在你的 Game.Update

中调用
public void UpdateTimer(GameTime gameTime)
{
    timer += gameTime.ElapsedGameTime;
    Debug.WriteLine("Timer: " + timer.TotalMilliseconds);
}

您需要将主游戏时间传递给实体。 ex-(Entity._gameTime = gametime) 然后开始更新.