【问题标题】:Displaying scores or game statistics on game complete在游戏完成时显示分数或游戏统计信息
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复。我实际上已经查看了您刚刚指向我的教程,但它没有我正在寻找的功能。我只是不想显示“你输了”和“重新开始”的文字,我想要的是一个关卡完成场景,其中显示你在该关卡中获得的分数以及你完成关卡所花费的时间以及玩家姓名.非常感谢您的帮助。干杯!
    • 所有你需要做的就是调整那个说“你输了”的部分。将图像添加到看起来像背景的“级别完整”图像。您只需要调用float 值来计算游戏持续了多长时间,并以与“您输了”相同的方式打印结果数字。玩家获得的任何分数也是如此。这很简单。
    • 感谢百万人。我明白你的意思,我必须说这是一个非常好的主意,但我想问一下,使用你的方法,是否可以保存这些显示的统计数据,作为玩家后续会话的进度跟踪器?跨度>
    • 当然。 71squared.com/2009/12/… 是关于如何使用 NSCoding 保存对象状态的一个很好的教程。不要忘记接受答案,因为以后需要它的人会知道它对您有帮助!
    • 谢谢,我会看教程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多