2012-04-28 30 views
0

私のゲーム用のレベルエディタを作成中です。私はcocos2dを使ってゲームを作っています。私はCCNodeのサブクラスであり、ゲーム内のすべてのレベルオブジェクトを含むレベルノードを持っています。その後、レベルがCCLayerに追加されます。レベルのすべての子(NSMutableArray)をresourcesフォルダのファイルに保存したいと思います。私はこのNSMutableArrayをロードし、それをループし、すべての保存されたレベルオブジェクトをレベルに追加します。最終的なゲームのレベルはこのファイルに基づいており、他のデバイスは他のすべてのゲームリソースと共に準備する必要があるため、これらのレベルのオブジェクトをローカルデバイスに保存することはできません。これを行う方法はありますか、またはレベルオブジェクトのすべてのプロパティを含む文字列を保存し、レベルをロードするために必要な情報を検索する必要がありますか?もしそうなら、NSStringと組み合わせてファイルにC構造体を読み書きする方法はありますか?あなたは(私はあなたが「リソース」フォルダによって意味したものであると考えている)アプリケーションバンドル内のデータを保存することはできませんリソースファイルからのオブジェクトの書き込みと読み取りIOS

 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

:ここで私はこれまで持っているものです。アプリのNSDocumentDirectoryに保存できます。オブジェクトがNSCodingに準拠している場合は、NSKeyedArchiverを使用してシリアル化できます。

デバッグに上記を行い、レベルの編集が完了したら、リリース用にバンドルしてNSKeyedUnarchiverを使用して逆シリアル化します。

+0

ありがとうございます、これは私の仕事を楽にします。しかし、NSDocumentDirectoryにドキュメントをバンドルしてリリースするにはどうすればよいですか? –

+0

リリースのために、あなたはそれらをアプリケーションバンドルに入れたいと思うでしょう。ユーザーがレベルを編集できるようにするには、文書ディレクトリーにノード全体を書き出すことができます。 – Morrowless

関連する問題