我正在使用XNA 4.0创建游戏,我在游戏中重置游戏时间时出现问题,
问题是我正在使用此代码在游戏中添加我的对象:
Timespan prevSpawn = timespan.zero;
Timespan objectSpawnTime = timespan.fromsec(5);
if (gameTime.TotalGameTime - prevSpawn> objectSpawnTime)
{
prevSpawn = gameTime.TotalGameTime;
AddObject();
}
我想将游戏时间重置为零,当再次开始游戏或游戏结束并进入主菜单再次点击游戏时,我想重置游戏时间。
答案 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;
这将为您提供可以随时部署的计时器。