目前,我的精灵循环速度与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"在调试输出中。
我做错了什么?或者有更好的方法吗?
答案 0 :(得分:2)
您的_gameTime
是0
,因为它只是初始化,就是这样。
您的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)然后它将开始更新。