0

我正在为我的游戏制作关卡编辑器。我使用cocos2d制作游戏。我有一个关卡节点,它是 CCNode 的子类,包含游戏中的所有关卡对象。然后该级别被添加到 CCLayer。我想将关卡的所有子级(一个 NSMutableArray)保存到资源文件夹中的一个文件中。我想加载这个 NSMutableArray,循环遍历它,并将所有保存的关卡对象添加到关卡。我无法将这些关卡对象保存在本地设备上,因为最终游戏中的关卡将基于此文件,并且其他设备需要将其与所有其他游戏资源一起准备好。有什么方法可以做到这一点,还是我只需要保存包含关卡对象所有属性的字符串并在这些字符串中搜索加载关卡所需的信息?如果是这样的话,有没有一种方法可以结合 NSString 将 ac 结构读写到文件中?这是我到目前为止所拥有的:

        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);
4

1 回答 1

0

您不能将数据保存在应用程序包中(我相信这就是您所说的“资源”文件夹)。您可以将它们保存在应用程序的NSDocumentDirectory中,如果您的对象符合NSCoding,您可以使用 序列化它们NSKeyedArchiver

执行上述调试,当你完成编辑关卡后,将其捆绑发布并用于NSKeyedUnarchiver反序列化。

于 2012-04-29T02:12:52.017 回答