Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 用于数据的文本文件_Iphone_Ios_Xcode_Properties_Cocos2d Iphone - Fatal编程技术网

Iphone 用于数据的文本文件

Iphone 用于数据的文本文件,iphone,ios,xcode,properties,cocos2d-iphone,Iphone,Ios,Xcode,Properties,Cocos2d Iphone,我一直在想,在我的Cocos2d游戏中,存储数据的最佳方式是什么 当我的游戏开始时,它会随机选择一种敌人。根据等级的不同,敌人的数量也会发生变化。我想做的是有一个包含所有数量的敌人的文件。我想有一个单独的文件,如果可能的话,这是很容易调整和更改 示例 比如说三级,选择敌人_1。然后它转到敌方_1数据文件,然后找到要创建的精灵数量 在寻找实现这一点的方法时,我没有意识到xCdoe中内置了一些我可以使用的文件。这些文件包括:字符串文件、属性列表和富文本文件。我最好的猜测是我必须使用属性列表,但我不确

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

当我的游戏开始时,它会随机选择一种敌人。根据等级的不同,敌人的数量也会发生变化。我想做的是有一个包含所有数量的敌人的文件。我想有一个单独的文件,如果可能的话,这是很容易调整和更改

示例

比如说三级,选择敌人_1。然后它转到敌方_1数据文件,然后找到要创建的精灵数量

在寻找实现这一点的方法时,我没有意识到xCdoe中内置了一些我可以使用的文件。这些文件包括:字符串文件、属性列表和富文本文件。我最好的猜测是我必须使用属性列表,但我不确定它们是如何工作的,以及如何在我的游戏中实现。你能告诉我怎么做吗

提前谢谢

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

属性列表最适合设计基于级别的游戏。
属性列表say Levels.plist可以轻松地转换为
NSDictionary
NSArray
,具体取决于它所保存的数据类型。
这两种方法用于将plist转换为
NSDictionary
NSArray

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

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

属性列表最适合设计基于级别的游戏。
属性列表say Levels.plist可以轻松地转换为
NSDictionary
NSArray
,具体取决于它所保存的数据类型。
这两种方法用于将plist转换为
NSDictionary
NSArray

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

NSArray *array = [[NSArray alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Levels" ofType:@"plist"]];
您可能可以使用一个属性列表文件

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

  • 一串
  • 布尔值
  • 整数
  • 浮点数
  • 日期(和时间)
  • 二进制数据块
  • 属性列表的数组
  • 一种字典,其中包含用于键的字符串和用于值的属性列表
属性列表可以将数组和字典嵌套到任何级别。这就是为什么您可以只使用一个属性列表。你可以让你的顶级对象是一个有两个键的字典:“敌人”和“等级”。“敌人”键的值是一个字典,每个类型的敌人有一个条目。“Levels”键的值是一个数组,每个级别有一个条目。下面是一个例子:

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

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

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

  • 一串
  • 布尔值
  • 整数
  • 浮点数
  • 日期(和时间)
  • 二进制数据块
  • 属性列表的数组
  • 一种字典,其中包含用于键的字符串和用于值的属性列表
属性列表可以将数组和字典嵌套到任何级别。这就是为什么您可以只使用一个属性列表。你可以让你的顶级对象是一个有两个键的字典:“敌人”和“等级”。“敌人”键的值是一个字典,每个类型的敌人有一个条目。“Levels”键的值是一个数组,每个级别有一个条目。下面是一个例子:

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


谢谢,但我如何让游戏获取某一级别的数据并将其输入我的sprite方法?请参阅plist通常包含键值对,因此当您将其转换为字典时,只需根据您的键获取值。假设您有包含该级别字典的GameLevel键,请说“level”:1,“noOfAnemy”:12
然后,您将获得键“gameLevel”的gameLevel dict以及访问关卡和noOfAnemy的权限。这一切取决于您的plist包含的内存,但是,我如何让游戏获取某个级别的数据并将其输入到我的sprite方法中呢?请参见plist通常由键值对组成,因此当您将其转换为字典时,只需根据您的键值获取值。假设您有包含该级别字典的GameLevel键,例如“level”:1,“noOfAnemy”:12
然后,您将获得键“gameLevel”的gameLevel dict以及访问关卡和noOfAnemy的权限。这取决于plist包含的内容