0

我正在使用 XNA 4.0 创建游戏,但在我的游戏中重置游戏时间时遇到问题,

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

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

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

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

4

2 回答 2

2

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

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

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

即当您重置/重新启动等时,不要参考 TotalGameTime 并尝试使其为零,而是参考您自己的对象的时间跨度,或参考 (TotalGameTime - TimeWhenReset) 其中 TimeWhenReset 是重置时从 TotalGameTime 复制的时间跨度。

这是未经测试的,但我认为如果我理解正确的话它应该可以工作。

于 2012-04-04T15:24:52.420 回答
0

对于更准确的计时器,您最好使用时间跨度和 DateTime 变量。当您想启动计时器时,将 DateTime 设置为现在,并在 TimeSpan 中执行以下操作:

timer = StartTime - DateTime.Now;

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

于 2012-04-14T12:45:48.790 回答