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 に答える