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”。
我做错了什么?或者有更好的方法吗?
你的 _gameTime
是 0
因为它刚刚初始化,就是这样。
您的游戏 class(继承自 Game
)获得了一个更新方法,参数类型为 GameTime
。此参数是您当前的帧时间。所以你的 UpdateTimer
也应该有一个 GameTime
参数并且应该在你的 Game.Update
中调用
public void UpdateTimer(GameTime gameTime)
{
timer += gameTime.ElapsedGameTime;
Debug.WriteLine("Timer: " + timer.TotalMilliseconds);
}
您需要将主游戏时间传递给实体。 ex-(Entity._gameTime = gametime) 然后开始更新.
目前,我的 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”。
我做错了什么?或者有更好的方法吗?
你的 _gameTime
是 0
因为它刚刚初始化,就是这样。
您的游戏 class(继承自 Game
)获得了一个更新方法,参数类型为 GameTime
。此参数是您当前的帧时间。所以你的 UpdateTimer
也应该有一个 GameTime
参数并且应该在你的 Game.Update
public void UpdateTimer(GameTime gameTime)
{
timer += gameTime.ElapsedGameTime;
Debug.WriteLine("Timer: " + timer.TotalMilliseconds);
}
您需要将主游戏时间传递给实体。 ex-(Entity._gameTime = gametime) 然后开始更新.