2012-03-03 68 views
0

我一直在想知道存儲數據的最佳方式是在我的Cocos2d遊戲中。用於數據的文本文件

當我的遊戲啓動時,它會選擇一個隨機類型的敵人。根據等級,敵人的數量會發生變化。我想要做的就是擁有一個擁有所有敵人數量的文件。如果可能的話,我希望將它放在單獨的文件中,以便輕鬆調整和更改。

說爲第3級,Enemy_1被選擇。然後它轉到Enemy_1數據文件,然後找到要創建的精靈數量。

當尋找一種方法來做到這一點,我沒有想到有一些內置到xCdoe的文件可以使用。這些包括:字符串文件,屬性列表和富文本文件。我最好的猜測是我必須使用屬性列表,但我不確定它們是如何工作的,以及它如何在我的遊戲中實現。你最好能給我如何做到這一點的代碼?

在此先感謝

編輯: 我忘了說,我不能只是有一個屬性文件,但我需要有一個對每種類型的敵人。這是因爲有些敵人比其他人更難殺死。

回答

1

你可能可以使用一個屬性列表文件的兩種方法。

首先,確保你明白屬性列表是什麼。一個屬性列表被遞歸地定義爲這些事情之一:

  • 字符串
  • 一個布爾值
  • 的整數
  • 一個浮點數
  • 日期(和時間)
  • blob二進制數據
  • 屬性列表數組
  • 一個字符串的密鑰字典和值的屬性列表

屬性列表可以將數組和字典嵌套到任何級別。這就是爲什麼你可以只使用一個屬性列表。你可以讓你的頂級對象成爲一個帶有兩個鍵的字典:「敵人」和「級別」。 「敵人」鍵的值是一個字典,每種類型的敵人都有一個條目。 「級別」鍵的值是一個數組,每個級別有一個條目。這裏有一個例子:

game property list

您可以使用Xcode的屬性列表編輯器創建和修改屬性列表(像我一樣爲例子)。如果您需要更多錯誤檢查,則可以使用+[NSDictionary dictionaryWithContentsOfFile:]或使用NSPropertyListSerialization加載它。 Xcode plist編輯器並不好,但即使您最終需要編寫自己的關卡編輯器,屬性列表仍然是存儲遊戲數據的便捷方式。

Property List Programming Guide

2

屬性列表是最適合設計基於水平的遊戲。
屬性列表說Levels.plist可以很容易地轉換成NSDictionaryNSArray取決於它所持有的數據類型。
這些都是用來plist中轉換成NSDictionaryNSArray

NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Levels" ofType:@"plist"]]; 

NSArray *array = [[NSArray alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Levels" ofType:@"plist"]]; 
+0

謝謝,但我將如何讓遊戲得到一個水平和輸入數據到我的精靈的方法? – akuritsu 2012-03-03 02:42:35

+0

參見plist通常由鍵值對組成,所以當您將其轉換爲字典時,只需根據您的密鑰獲取值。 – 2012-03-03 02:52:02

+0

假設你有GameLevel鍵,其中包含該級別的字典說「級別」:1,「noOfAnemy」:12
然後你得到gameLevel字典爲關鍵「GameLevel」和訪問級別和noOfAnemy.it都取決於你的plist包含 – 2012-03-03 02:53:43

相關問題