目前,在那个MonoGame遍历它以相同的速度我精灵循环代码。我想通过使用GameTime创建延迟来减慢这个过程。然而,它从来没有工作,所以我决定,我会使用debug.WriteLine()来检查GameTime是否更新。它没有,永远。GameTime始终为0 - MonoGame(XNA) - C#
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”。
我在做什么错?还是有更好的方法来做到这一点?
一般注意:应该(几乎)总是用'Total_'属性('TotalSeconds','TotalMilliseconds',...)用'GameTime'打交道时。 “非总数”方法仅返回该时间的*部分*,而“总计”方法返回以您想要的时间单位表示的整个量程。例如,如果经过1.7秒,“毫秒”将返回“700”,而“TotalMilliseconds”将返回“1700”。 'Seconds'将返回'1',并且'TotalSeconds'将返回'1.7'。通常,使用“普通”属性的唯一时间是当您想要执行特殊格式化或其他非标准格式时。 –
另请注意,您实际上并不需要保留自己的累计计时器,“GameTime”已经为您在['GameTime.TotalGameTime'](https://msdn.microsoft.com/zh-cn/ library/microsoft.xna.framework.gametime.totalgametime.aspx)属性。 –