【发布时间】:2011-11-10 06:16:06
【问题描述】:
请任何人给我指点任何教程或给我一个步骤大纲,显示如何在 Cocos2d -iphone 游戏结束时显示游戏统计信息,如“分数”,我需要一些指导来实现游戏的关卡完成场景,在完成或游戏结束时,会出现关卡完成屏幕并显示分数、使用时间和大多数游戏中看到的玩家姓名。我已经进行了一些研究,到目前为止,我已经看到了使用 NSKeyedArchiver 和 NSKeyedUnarchiver 保存游戏状态的示例,如下面的代码所示:
在appdelegate.mm的applicationWillTerminate方法中
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask,YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *gameStatePath = [documentsDirectory
stringByAppendingPathComponent:@"gameState.dat"];
NSMutableData *gameData;
NSKeyedArchiver *encoder;
gameData = [NSMutableData data];
encoder = [[NSKeyedArchiver alloc] initForWritingWithMutableData:gameData];
[encoder encodeDouble:[[GameManager sharedGameManager]bestTime] forKey:@"bestTime"];
[encoder encodeInteger:[[GameManager sharedGameManager]livesLeft]
forKey:@"livesLeft"];
[encoder encodeInteger:[[GameManager sharedGameManager]currentLevel]
forKey:@"currentLevel"];
[encoder finishEncoding];
[gameData writeToFile:gameStatePath atomically:YES];
[encoder release];[/code]
在我的 levelComplete.mm 文件中我有
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentDirectory = [paths objectAtIndex:0];
NSMutableData *gameData;
NSKeyedUnarchiver *decoder;
NSString *documentPath = [documentsDirectory
stringByAppendingPathComponent:@"gameState.dat"];
gameData = [NSData dataWithContentsOfFile:documentPath];
if(gameData) {
decoder = [[NSKeyedUnarchiver alloc] initForReadingWithData:gameData];
[[GameManager sharedGameManager] setCurrentLevel:[decoder
decodeIntegerForKey:@"currentLevel"]];
[[GameManager sharedGameManager] setlivesLeft:[decoder
decodeIntegerForKey:@"livesLeft"]];
[[GameManager sharedGameManager] setBestTime:[decoder
decodeDoubleForKey:@"bestTime"]];
[decoder release];
收到此信息后,我似乎对下一步要做的事情感到困惑,我不知道这是否是正确的方法。我非常欢迎任何关于实施该路径的建议或大纲。
我的项目还有一个单例类、一个gameplayLayer 和一个HUD 层,这些变量目前正在其中显示。
谢谢
【问题讨论】:
标签: iphone cocos2d-iphone