C# gameTime.ElapsedGameTime.Seconds未更新
我刚刚发现了一些引起我兴趣的东西。看,我通常用C# gameTime.ElapsedGameTime.Seconds未更新,c#,time,spritefont,C#,Time,Spritefont,我刚刚发现了一些引起我兴趣的东西。看,我通常用int Time=Duration来做我的“计时器”在我的更新中,它将变成Time-=gameTime.ElapsedGameTime.millides。然而,我只是试着用gameTime.ElapsedGameTime.Seconds来做,因为我认为这会对性能更友好。但现在它根本没有更新 我的代码基本上是: 声明变量: int-Time=120SpriteFont spriteFont1 更新:Time-=gameTime.ElapsedGameT
int Time=Duration来做我的“计时器”代码>在我的更新中,它将变成Time-=gameTime.ElapsedGameTime.millides代码>。然而,我只是试着用gameTime.ElapsedGameTime.Seconds
来做,因为我认为这会对性能更友好。但现在它根本没有更新
我的代码基本上是:
声明变量:
int-Time=120代码>SpriteFont spriteFont1代码>
更新:Time-=gameTime.ElapsedGameTime.Seconds代码>
绘制字符串来告诉我时间:spriteBatch.Draw(时间、位置、颜色、白色)
不知怎的,字符串只告诉我,当我用毫秒而不是秒来做时,时间在减少。为什么?游戏时间。ElapsedGameTime.Seconds
是自上次更新以来的时间量。由于它更新非常快,更新之间的时间小于秒。秒返回为int
,因此您将始终得到0。ElapsedGameTime不是每次更新之间经过的时间吗?我可能错了,但是如果每次更新之间的时间不到一秒,那么每次更新的时间总是为零,因为每次都会重置。使用Total*
像TotalSeconds
,而不是Seconds
@Diamondo25 TotalSeconds对他的倒计时不起作用。它会做-1秒,然后是-2,-3,等等。顺便说一下,秒并不比毫秒更“性能友好”。也许如果你有一百万个电话,你可以节省几微秒(不知道它在内部是如何工作的),但这不可能成为你应用程序的瓶颈。谢谢,评论中已经说过了,但这是唯一的物理答案。另外,如果我希望它是实际的时间,而不是帧之间的时间,那么应该怎么做呢?可以使用TotalGameTime
或者只是将毫秒添加到一个变量中。通过将时间存储在变量中,您将能够“重置”计时器。