2010-11-10 78 views
0

我目前正在嘗試學習遊戲編程,所以我將從一個簡單的iPhone應用程序開始,以便我能夠學習遊戲編程的流程和組織。現在,我有一個名爲PlayerShip的玩家的班級,而PlayerShip可以有不同的級別(即玩家升級他們的船隻時)。因此,對於每個級別的船舶,班級使用不同的圖像。對於每一級的船舶,我都有不變的值,比如船上的炮塔數量,炮塔的位置以及推進器的數量和推進器在船上的位置(例如,船1級有兩個炮塔和一個推進器)。我的問題是,爲這些船舶存儲和讀取這些數據的最佳方式是什麼?我不想每次啓動一艘船時都要定義它們,因爲那看起來沒有組織性,而且我也不想在發生變化時對其進行硬編碼。我正在考慮使用PLIST文件來存儲所有的值,但我也知道,在閱讀PLIST時,它的全部或全部意味着您必須將整個文件讀入內存,而且我不希望這會影響遊戲的性能。那麼存儲這些靜態信息並在代碼中檢索的最佳途徑是什麼,而不必冒風險?在遊戲中讀取和存儲數據(iPhone)

回答

1

如果您沒有將您的值硬編碼到類中,則必須從某個外部源(可能會影響性能 - 取決於您如何以及何時執行此操作)讀取它們。就你而言,聽起來像你最好的選擇是加載信息「前期」(例如,當應用程序啓動時)。然後它將一直保留在內存中,直到程序終止。

至於如何存儲數據,你可以考慮尋找到核心數據:

http://developer.apple.com/library/ios/ipad/#documentation/DataManagement/Conceptual/iPhoneCoreData01/Introduction/Introduction.html

特定您感興趣的將是如何運送你的應用程序預先加載的數據:

http://www.raywenderlich.com/980/core-data-tutorial-how-to-preloadimport-existing-data

+0

是啊,我知道我想加載它在外部我的問題是什麼是最好的選擇。我聽說PLIST可以使用更多的資源。沒有玩過很多我自己的coredata,但我可以看看。我之前使用過SQLite,會不會是一個可行的解決方案? – Alexander 2010-11-10 04:17:12

+0

是的,SQLite將成爲coredata的後盾商店。根據數據的大小和複雜性,數據庫可能會過度殺傷。我想如果它足夠簡單,你可以從文件中讀取它: codefinger 2010-11-23 16:04:25

0

首先,你必須考慮「......硬編碼,以防止發生變化...」你有變化的問題是,隨着你的應用程序二進制文件的每一個變化,你需要上傳一個新的版本sion到應用程序商店(這包括對應用程序包中plist等的更改)。

有人說你可以選擇從應用程序啓動時從Web服務器下載一個plist(或其他文件,即xml等)這些值。在你的情況下,當初始化你的遊戲並將它們保存在內存中時,最好加載這些值。

+0

當我說變化時,我在想更多,我不想有無組織的代碼,我不得不去尋找硬編碼的值來改變。我希望它能夠從一個地方以一種乾淨的方式拉出來,以便我可以在一箇中心位置進行更改 – Alexander 2010-11-10 04:16:08