2012-04-04 63 views
0

我創建一個遊戲XNA 4.0和我有我的遊戲復位遊戲時間的問題,不能我gametime歸零XNA

問題是我使用此代碼加入我的對象在遊戲:

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

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

我想比賽時間歸零,重新開始時,遊戲或遊戲結束並進入主菜單,再點擊播放,我想重置gametime。

+0

是你的問題沒有進入你的上面if語句或是如何重置實際遊戲時間。你有沒有準備好上面提到的每一個動作? – ericosg 2012-04-04 09:33:44

+0

這個問題是重置實際遊戲時間爲零,當我的遊戲結束其狀態,我稱之爲tryAgain狀態,並有一個按鈕,我用於重放遊戲的按鈕名稱是「再次玩」,所以當我推這按鈕遊戲開始正常工作,但問題是我不能使gametime.totalgametime爲零,我不知道是否有另一種編碼方式,使對象每5秒重生 – Max 2012-04-04 14:11:12

回答

2

正如我從下面的MSDN條目瞭解到的,GameTime.TotalGameTime屬性將繼續「滴答」,直到您結束遊戲或整個應用程序。

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

也許這將是明智的使用自己的對象,您可以與您的任何行動的復位,因此具有在時間跨度更多的控制。那麼你仍然可以使用這個屬性來計算從一個和另一個的差異。 (TotalGameTime - TimeWhenReset),其中TimeWhenReset是TotalGameTime從您TotalGameTime複製的時間範圍,當您重置/重新啓動等時,請不要參考TotalGameTime並嘗試將其設爲0,而是引用您自己的對象的時間範圍或TotalGameTime - TimeWhenReset重啓。

這是未經測試的,但我認爲它應該工作,如果我理解正確。

+0

這確實是這樣做的方式。 gameTime是指整個應用程序,您可以使用具有靜態字段的類來管理內部遊戲時間。無需測試。 – Elideb 2012-04-07 19:04:23

0

對於更準確的計時器,您最好使用時間跨度,並使用DateTime。設置日期時間到現在當你要開始計時,並在時間跨度做這樣的事情:

timer = StartTime - DateTime.Now; 

這會給你,你可以在任何時候部署的計時器。