2013-03-31 94 views
0

我在實現一個遊戲,現在我正在實現暫停功能。但是我看到了一些不同的方式來做到這一點。 我已經做了很多的研究,像這樣的教程:在遊戲中暫停,UICustomalertview/UIView

的UIAlertView中的蘋果文檔:Tutorial

但我已經看到了你的應用程序」真的可以用這種警報被拒絕說:

這個類的視圖層次是私人的,不能修改。

其他的做法可能是(如我所見)來實現UIView。但UIalertviews的優點是暫停功能已經實現,我不知道我怎麼能做到這一點暫停所有動畫等不使用相同的功能:

sleep(INFINITY); 

什麼是最好的方式實施暫停菜單和功能來獲得這樣的結果(這是從我的抽屜圖片):

Pause function from my friend

回答

1

您可能需要:

  1. isPaused得到了PA使用模式指示燈
  2. 酥料餅的屏幕

,你應該在遊戲主循環的第一件事是BOOL isPaused得到指示,所以遊戲知道當它處於暫停狀態。通過執行適當的操作,將暫停模式視爲其他模式。由於其他行動可能必須完成,停止該流程並不是很好。其次,popover屏幕可以是具有所需透明度或更好的全屏圖形:programmaticaly製作50%透明度的黑色圖像,因此您可以使背景變暗並在視圖堆棧頂部顯示警報視圖。

對設計小題外話,你應該分兩個部分:

  • UI只控制遊戲參數
  • 遊戲循環控制遊戲動作

這是很好的劃分實際的遊戲循環來自控件。像這個警報視圖這樣的控件應該只能操作顯示參數,不能調用任何其他操作(可能CPU價格昂貴)。當遊戲根據狀態參數運行顯示圖形時,遊戲循環應該始終運行。

+0

認爲這是一個很好的答案:)只是,如果循環暫停,但一個動畫已經開始,它會繼續或所有暫停,如果我把一個循環while(isPaused == YES){...動畫...}? – user2057209

+0

這取決於你如何實現它。如果您使用Core Animation,則所有已啓動的動畫都會執行直到完成。我不會建議因爲遊戲暫停而停止運行循環。我寧願處理暫停作爲一個單獨的遊戲狀態,雖然 –

+0

哦謝謝,我會研究= =) – user2057209