我正在为我的游戏制作关卡编辑器。我用cocos2d来制作游戏。我有一个级别节点,它是CCNode的子类,包含游戏中的所有级别对象。然后级别被添加到CCLayer。我想将级别的所有子级(NSMutableArray)保存到资源文件夹中的文件。我想加载这个NSMutableArray,循环遍历它,并将所有保存的级别对象添加到该级别。我无法在本地设备上保存这些级别对象,因为最终游戏中的级别将基于此文件,而其他设备需要将其与所有其他游戏资源一起准备好。有没有办法做到这一点,或者我必须只保存包含关卡对象的所有属性的字符串,并搜索这些字符串以获取加载关卡所需的信息?如果是这样,是否有一种方法可以将结构与NSString一起读取和写入文件?以下是我到目前为止的情况:
NSString * filePath = @"LevelSaves.txt";
NSString * fileRoot = [[NSBundle mainBundle]pathForResource:filePath ofType:@"txt"];
NSString * fileContents = [NSString stringWithContentsOfFile:fileRoot encoding:NSUTF8StringEncoding error:nil];
NSArray * allLinedStrings = [fileContents componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
ObjectFactory * objFactory = ObjectFactory::sharedObjectFactory();
for (NSString * curString in allLinedStrings) {
NSArray * seperatedString = [curString componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@";"]];
NSString * objectID = (NSString*)[seperatedString objectAtIndex:0];
NSArray * properties = (NSArray*)[seperatedString objectAtIndex:1]; //not really sure about this part. Haven't tried saving anything there yet.
objFactory->createObject(objectID,properties);
答案 0 :(得分:0)
您无法在应用程序包中保存数据(我认为这是“resources”文件夹的含义)。您可以将它们保存在应用的NSDocumentDirectory
中,如果您的对象符合NSCoding
,则可以使用NSKeyedArchiver
对其进行序列化。
执行以上操作以进行调试,当您完成编辑级别后,将其捆绑以供发布并使用NSKeyedUnarchiver
进行反序列化。