用于数据的文本文件

时间:2012-03-03 02:25:55

标签: iphone ios xcode properties cocos2d-iphone

我一直想知道在我的Cocos2d游戏中存储数据的最佳方式是什么。

当我的游戏启动时,它会选择一个随机类型的敌人。根据等级,敌人的数量会发生变化。我想要做的是拥有一个文件,其中包含产生的所有敌人数量。如果可能的话,我想将它放在一个单独的文件中,以便于调整和更改。

示例

说3级,选择Enemy_1。然后转到Enemy_1数据文件,然后查找要创建的精灵数量。

在搜索某种方法时,我发现xCdoe中内置了一些我可以使用的文件。这些包括:字符串文件,属性列表和富文本文件。我最好的猜测是我必须使用属性列表,但我不确定它们是如何工作的,以及它如何在我的游戏中实现。你能不能给我一些如何做的代码?

提前致谢

编辑: 我忘了说我不能只有一个属性文件,但我需要为每种类型的敌人都有一个。这是因为有些敌人比其他人更难杀死。

2 个答案:

答案 0 :(得分: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"]];

答案 1 :(得分:1)

你可能可以使用一个属性列表文件。

首先,确保您了解属性列表是什么。属性列表以递归方式定义为以下内容之一:

  • 一个字符串
  • 布尔值
  • 一个整数
  • 一个浮点数
  • 日期(和时间)
  • 一团二进制数据
  • 一系列属性列表
  • 包含键的字符串和值的属性列表的字典

属性列表可以将数组和字典嵌套到任何级别。这就是为什么你可以只使用一个属性列表。您可以将顶级对象设为具有两个键的字典:“敌人”和“级别”。 “敌人”键的值是一个字典,每种类型的敌人都有一个条目。 “Levels”键的值是每个级别有一个条目的数组。这是一个例子:

game property list

您可以使用Xcode的属性列表编辑器来创建和修改属性列表(就像我为该示例所做的那样)。您可以使用+[NSDictionary dictionaryWithContentsOfFile:]加载,或者如果需要更多错误检查,则使用NSPropertyListSerialization。 Xcode plist编辑器不是很好,但即使你最终需要编写自己的关卡编辑器,属性列表仍然是存储游戏数据的便捷方式。

Property List Programming Guide