任何人都可以指点我任何教程或给我一个大概采取的步骤,说明如何在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图层,其中显示了这些变量。
由于
答案 0 :(得分:1)
Here是一个关于如何制作一个简单的太空射击应用程序的精彩小教程。我在比赛结束时有一个显示一些信息的案例。还有很多关于如何进行基本游戏编程的其他教程,包含大量示例代码。希望有帮助!