游戏时间始终为0-单游戏(XNA)-C#

游戏时间始终为0-单游戏(XNA)-C#,c#,xna,monogame,xna-4.0,C#,Xna,Monogame,Xna 4.0,目前,我的精灵循环的速度与MonoGame循环代码的速度相同。我想通过使用GameTime创建延迟来减缓这个过程。然而,它从来都不起作用,所以我决定使用debug.WriteLine()检查游戏时间是否更新。从来没有 abstract class Entity { protected GameTime _gameTime; public TimeSpan timer { get; set; } public Entity() { _gameTim

目前,我的精灵循环的速度与MonoGame循环代码的速度相同。我想通过使用GameTime创建延迟来减缓这个过程。然而,它从来都不起作用,所以我决定使用debug.WriteLine()检查游戏时间是否更新。从来没有

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”


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

你的
\u游戏时间是
0
,因为它只是初始化的,就是这样

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

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

您需要将主游戏时间传递给实体。例如-(Entity.\u gameTime=gameTime),然后它将开始更新。

不要使用
毫秒
!使用
总毫秒数
<代码>毫秒
waps每1000毫秒一次(如果更新之间通过
1500
ms,它将只返回
500
TotalMillistics
将给出自上次更新以来的时间,以毫秒表示。只是从他那里复制了它,所以是的。。我可以解决它。一般说明:在处理
游戏时间
时,您应该(几乎)始终使用
Total
属性(
TotalSeconds
totalmicondises
,…)。“non-Total”方法只返回部分时间,而“Total”方法返回以所需时间单位表示的整个跨度。例如,如果1.7秒过去,
毫秒
将返回
700
,而
总毫秒
将返回
1700
Seconds
将返回
1
,而
TotalSeconds
将返回
1.7
。一般来说,使用“普通”属性的唯一时间是在您想要进行特殊格式设置或其他非标准设置时。另外请注意,您实际上不需要保留自己的累积计时器,
GameTime
已经在属性中为您做了这些。