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

时间:2017-10-12 11:24:36

标签: c# xna monogame xna-4.0

目前,我的精灵循环速度与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"在调试输出中。

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

2 个答案:

答案 0 :(得分:2)

您的_gameTime0,因为它只是初始化,就是这样。

您的Game类(继承自Game)获得了Update方法,参数类型为GameTime。此参数是您当前的帧时间。因此,您的UpdateTimer应该还有一个GameTime参数,应该在Game.Update

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

答案 1 :(得分:1)

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