在XNA中无法将我的游戏时间重置为零

时间:2012-04-04 09:29:49

标签: xna-4.0

我正在使用XNA 4.0创建游戏,我在游戏中重置游戏时间时出现问题,

问题是我正在使用此代码在游戏中添加我的对象:

Timespan prevSpawn = timespan.zero;
Timespan objectSpawnTime = timespan.fromsec(5);

if (gameTime.TotalGameTime - prevSpawn> objectSpawnTime)
        {
            prevSpawn = gameTime.TotalGameTime;
            AddObject();
        }

我想将游戏时间重置为零,当再次开始游戏或游戏结束并进入主菜单再次点击游戏时,我想重置游戏时间。

2 个答案:

答案 0 :(得分:2)

据我所知,从下面的MSDN条目中,GameTime.TotalGameTime属性将继续“滴答”,直到您结束游戏或整个应用程序。

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.gametime.totalgametime.aspx

使用您自己的对象可能更明智,您可以使用任何操作重置该对象,从而可以更好地控制时间跨度。然后你仍然可以使用这个属性来计算一个和另一个的差异。

即。当你重置/重启等时,不要引用TotalGameTime并尝试使其为零,而是引用你自己对象的时间跨度,或者指向(TotalGameTime - TimeWhenReset),其中TimeWhenReset是你重置时从TotalGameTime复制的时间跨度。

这是未经测试的,但我认为如果我理解正确,它应该有用。

答案 1 :(得分:0)

对于更准确的计时器,您可以更好地使用时间跨度和DateTime可用。如果要启动计时器,请将DateTime设置为现在,并在TimeSpan中执行以下操作:

timer = StartTime - DateTime.Now;

这将为您提供可以随时部署的计时器。