cocos2d-android - 如何在android cocos2d中存储游戏分数

标签 cocos2d-android

我使用 android cocos2d 计算游戏项目的分数,在该游戏中完成第一级后进入下一级别,所以我想存储第一级分数并添加下一级分数。我如何将分数存储在 android-cocos2d 中。

最佳答案

使用NSKeyedArchiver类来存储,这里有一个例子:

------------ 写

        // get allowed save paths
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        // string for the default path
NSString *documentsDirectory = [paths objectAtIndex:0];
        // full path plus filename for save game
NSString *gameStatePath = [documentsDirectory stringByAppendingPathComponent:@"gameState.dat"];
        // storage for game state data
NSMutableData *gameData = [NSMutableData data];
        // keyed archiver
NSKeyedArchiver *encoder = [[NSKeyedArchiver alloc] initForWritingWithMutableData:gameData];
        // encode all variables we want to track
                 [encoder encodeObject:[player inventoryDict] forKey:@"playerInventoryDict"];
                 [encoder encodeObject:[player equippedDict] forKey:@"playerEquippedDict"];
                 [encoder encodeInt:[player initialActionPoints] forKey:@"playerInitialActionPoints"];
                 [encoder encodeInt:[player actionPoints] forKey:@"playerActionPoints"];
                 [encoder encodeInt:[player experiencePoints] forKey:@"playerExperiencePoints"];
                 [encoder encodeInt:[player xpNextLevel] forKey:@"playerXPNextLevel"];
                 [encoder encodeBool:[player isThinking] forKey:@"playerIsThinking"];
        // finish, write and release the encoder
[encoder finishEncoding];
[gameData writeToFile:gameStatePath atomically:YES];
[encoder release];

----------------阅读

 // get allowed save paths
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
            // string for the default path
    NSString *documentsDirectory = [paths objectAtIndex:0];
            // full path plus filename for save game
    NSString *gameStatePath = [documentsDirectory stringByAppendingPathComponent:@"gameState.dat"];
            // storage for game state data
    NSMutableData *gameData = [NSMutableData data];
            // start the decoder
    NSKeyedUnarchiver *decoder = [[NSKeyedUnarchiver alloc] initForReadingWithData:gameData];

            // start with player data
    PlayerEntity *player = [PlayerEntity player];

        // variables from the PlayerEntity Class
player.inventoryDict = (NSDictionary *)[decoder decodeObjectForKey:@"playerInventoryDict"];
player.equippedDict = (NSDictionary *)[decoder decodeObjectForKey:@"playerEquippedDict"];
player.initialActionPoints = [decoder decodeIntForKey:@"playerInitialActionPoints"];
player.actionPoints = [decoder decodeIntForKey:@"playerActionPoints"];
player.experiencePoints = [decoder decodeIntForKey:@"playerExperiencePoints"];
player.xpNextLevel = [decoder decodeIntForKey:@"playerXPNextLevel"];
player.isThinking = [decoder decodeBoolForKey:@"playerIsThinking"];

        // release the decoder
[decoder release];

原始代码来自 HERE

关于cocos2d-android - 如何在android cocos2d中存储游戏分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8426084/

相关文章:

cocos2d-android - Cocos2d-x 与 cocos2d-android 的 Android 游戏

安卓NDK : WARNING: Ignoring unknown import directory: C

android - 碰撞在 Box2D 与 Cocos2d Android 中无法正常工作

c++ - eclipse 可以使用像 cocos2d 这样的外部库来自动完成吗?

java - 如何使用 Startactivity 并使调用 Cocos2d 层保持 Activity 状态 (Android/Java)?

android - Cocos2d android 中的动画 Sprite

cocoa-touch - 获取 Sprite 在数组 cocos2d 中的位置

compilation - cocos2dx3.10 android 编译错误

java - Android cocos2d如何对CCscene进行截图?

java - 如何在java中使用Cocos2d创建动画?