Iphone 在游戏完成时显示分数或游戏统计信息

Iphone 在游戏完成时显示分数或游戏统计信息,iphone,cocos2d-iphone,Iphone,Cocos2d Iphone,请任何人给我指点任何教程,或者给我一个大概的步骤,说明如何显示游戏统计数据,如“分数”,当游戏在Cocos2d-iphone中结束时,我需要一些指导来实现一个游戏的关卡完整场景,在游戏完成或结束时,水平完成屏幕出现,并显示分数,使用的时间和球员的名字,如在大多数游戏中看到的。我已经进行了一些研究,到目前为止,我已经看到使用NSKeyedArchiver和NSKeyedUnachiver保存游戏状态的示例,如下代码所示: 在appdelegate.mm中的applicationWillTermin

请任何人给我指点任何教程,或者给我一个大概的步骤,说明如何显示游戏统计数据,如“分数”,当游戏在Cocos2d-iphone中结束时,我需要一些指导来实现一个游戏的关卡完整场景,在游戏完成或结束时,水平完成屏幕出现,并显示分数,使用的时间和球员的名字,如在大多数游戏中看到的。我已经进行了一些研究,到目前为止,我已经看到使用NSKeyedArchiver和NSKeyedUnachiver保存游戏状态的示例,如下代码所示:

在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层,在这些层中,目前正在显示这些变量


感谢

这是一个关于如何制作一个简单的太空射击应用程序的很好的小教程。我在游戏结束时有一个案例,其中显示了一些信息。还有很多关于如何进行基本游戏编程的教程,其中有很多示例代码。希望有帮助

是一个关于如何制作一个简单的太空射击应用程序的很好的小教程。我在游戏结束时有一个案例,其中显示了一些信息。还有很多关于如何进行基本游戏编程的教程,其中有很多示例代码。希望有帮助

谢谢你的回复。我实际上已经看过了你刚才指给我看的教程,但它没有我想要的功能。我只是不想显示“你输了”和“重新开始”文本,我想要的是一个完整的场景,其中显示了你在该关卡中取得的分数以及完成关卡所花的时间和球员姓名。还是谢谢你的帮助。干杯你所需要做的就是修改“你输了”的部分。向is添加一个图像,该图像看起来像背景的“完整级别”图像。您只需调用
float
值来计算游戏持续的时间,并以与“您输了”相同的方式打印结果数字。这同样适用于玩家获得的任何分数。非常简单,非常感谢。我明白你的意思,我必须说这是一个非常好的主意,但我想问一下,使用你的方法,是否可以保存这些显示的统计数据,作为后续会话中玩家的进度跟踪?当然可以。这是一篇关于如何使用
NSCoding
保存对象状态的精彩教程。不要忘记接受答案,因为以后需要它的人会知道它帮助了你!谢谢我会看教程。谢谢你的回复。我实际上已经看过了你刚才指给我看的教程,但它没有我想要的功能。我只是不想显示“你输了”和“重新开始”文本,我想要的是一个完整的场景,其中显示了你在该关卡中取得的分数以及完成关卡所花的时间和球员姓名。还是谢谢你的帮助。干杯你所需要做的就是修改“你输了”的部分。向is添加一个图像,该图像看起来像背景的“完整级别”图像。您只需调用
float
值来计算游戏持续的时间,并以与“您输了”相同的方式打印结果数字。这同样适用于玩家获得的任何分数。非常简单,非常感谢。我明白你的意思,我必须说这是一个非常好的主意,但我想问一下,使用你的方法,是否可以保存这些显示的统计数据,作为后续会话中玩家的进度跟踪?当然可以。这是一篇关于如何使用
NSCoding
保存对象状态的精彩教程。不要忘记接受答案,因为以后需要它的人会知道它帮助了你!谢谢,我会看教程的。