13--游戏存档

保存游戏中的数据时游戏中常用的功能,Cocos2DX为我们提供CCUserDefault类。该类使用xml文件存储数据,并提供几个基本类型的存储接口。

//根据key获取指定的值,重载版本在没有读取到值返回的默认值
    bool    getBoolForKey(const char* pKey);
    bool    getBoolForKey(const char* pKey, bool defaultValue);

    int     getIntegerForKey(const char* pKey);
    int     getIntegerForKey(const char* pKey, int defaultValue);

    float    getFloatForKey(const char* pKey);
    float    getFloatForKey(const char* pKey, float defaultValue);

    double  getDoubleForKey(const char* pKey);
    double  getDoubleForKey(const char* pKey, double defaultValue);

    std::string getStringForKey(const char* pKey);
    std::string getStringForKey(const char* pKey, const std::string & defaultValue);

    // 根据key设置值

    void    setBoolForKey(const char* pKey, bool value);

    void    setIntegerForKey(const char* pKey, int value);

    void    setFloatForKey(const char* pKey, float value);

    void    setDoubleForKey(const char* pKey, double value);

    void    setStringForKey(const char* pKey, const std::string & value);
    //保存到xml文件调用
    void    flush();

下面是一个简单地测试代码,直接放在HelloWorldScene.cpp中init方法中即可

CCUserDefault::sharedUserDefault()->setBoolForKey("isMax",false);
    CCUserDefault::sharedUserDefault()->setDoubleForKey("HP",2.0);
    CCUserDefault::sharedUserDefault()->setFloatForKey("MP",3.0f);
    CCUserDefault::sharedUserDefault()->setIntegerForKey("lv",2);
    CCUserDefault::sharedUserDefault()->setStringForKey("name","hjs");

    bool ismax = CCUserDefault::sharedUserDefault()->getBoolForKey   ("isMax" );
    double hp = CCUserDefault::sharedUserDefault()->getDoubleForKey ("HP"    );
    float mp = CCUserDefault::sharedUserDefault()->getFloatForKey  ("MP"    );
    int lv = CCUserDefault::sharedUserDefault()->getIntegerForKey("lv"    );
    std::string name = CCUserDefault::sharedUserDefault()->getStringForKey ("name"  );

    if(ismax)
        CCLOG("ismax true");
    else
        CCLOG("ismax false");

    CCLOG("hp:%f",hp);
    CCLOG("mp:%f",mp);
    CCLOG("lv:%d",lv);
    CCLOG("name:%s",name.c_str());

    int tmp = CCUserDefault::sharedUserDefault()->getIntegerForKey("tmp",10);
    CCLOG("tmp:%d",tmp);

测试过程中并发现不调用flush()方法也能及时写到xml文件中,但还是要记得调用。

13--游戏存档,布布扣,bubuko.com

时间: 2024-10-26 21:03:22

13--游戏存档的相关文章

Cocos2d-x 游戏存档

游戏存档功能可以保存游戏中数据,让玩家游戏可以延续, 单机游戏更为重要.而CCUserDefault可以作轻量级数据库使用,用来存储数据,支持数据类型bool,int, float, double, string. 存储数据 CCUserDefault::sharedUserDefault()->setStringForKey("string", "value1"); //参数顺序:键,对应的值 CCUserDefault::sharedUserDefault

【重要】U3D存放本地游戏存档——不同平台载入XML文件的方法——IOS MAC Android

在PC上和IOS上读取XML文件的方式略有差别,经测试,IOS上不支持如下方法载入XML文件: XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("Assets/Resources/text.xml"); IOS上载入XML的正确方法有2种: (1)方法一 TextAsset textAsset = (TextAsset)Resources.Load(filename, typeof(TextAsset)); XmlDocument

PlayerPrefs 游戏存档

游戏存档,持久化储存,玩家游戏记录以数据形式存在PlayerPrefs中的. 原理: 在Mac OS X上PlayerPrefs存储在-/Library/PlayerPrefs文件夹,名为unity.[company name].[product name].plist,这里company和product名是在Project Setting中设置的,相同的plist用于在编辑器中运行的工程和独立模式 在Windows独立模式下,PlayerPrefs被存储在注册表的 HKCU\Software\

PlayerPrefs游戏存档

本地存储.相当于Flash里面的SharedObject. Android位置:机器自身存储的(非扩展卡)/data/data/appname/shared_prefs/{AppName}.xml,如果想查看需要Root. IOS位置:暂时还没找到. 其他位置:参考 https://docs.unity3d.com/Documentation/ScriptReference/PlayerPrefs.html PlayerPrefs游戏存档,码迷,mamicode.com

【转】Unity 游戏存档 PlayerPrefs类的用法

http://www.cnblogs.com/qiaogaojian/p/5969855.html unity3d提供了一个用于本地持久化保存与读取的类--PlayerPrefs.工作原理非常简单,以键值对的形式将数据保存在文件中,然后程序可以根据这个名称取出上次保存的数值.    PlayerPrefs类支持3中数据类型的保存和读取,浮点型,整形,和字符串型.    分别对应的函数为:    SetInt();保存整型数据:    GetInt();读取整形数据:    SetFloat();

steam游戏存档迁移

之前玩的盗版guacamelee等着打折入正,今天入了,不想重新打了,就把存档从盗版迁移了一下. 盗版的目录是F:\Guacamelee\Profile\ALI213\Saves,该目录下又一个SAVE.DAT是储存游戏数据的文件. steam正版的游戏数据在steam的安装目录(注意不是游戏库)下的userdata下,古国userdata下又多个数字,那么找最近保存的(最好找个游戏先进去玩一下),进入userdata下的你自己账号的目录后,把目录按时间排序(玩正版的guacamelee到存档后

【读书笔记《Android游戏编程之从零开始》】13.游戏开发基础(Paint 画笔)

1.Paint画笔 Panit(画笔)是绘图额辅助类,其类中包含文字和位图额样式.颜色等属性信息.Paint 的常用方法如下: setAntiAlias(boolean aa) 作用:设置画笔是否无锯齿 参数:true 表示无锯齿,false 表示有锯齿,默认为 false . setAlpha(int a) 作用:设置画笔的透明度 参数:透明值 setTextAlign(Paint.Align align) 作用:设置绘制文本的锚点 参数:Paint.Align 类中的常量 measureTe

(转)PlayerPrefs游戏存档

unity3d提供了一个用于本地持久化保存与读取的类——PlayerPrefs.工作原理非常简单,以键值对的形式将数据保存在文件中,然后程序可以根据这个名称取出上次保存的数值.    PlayerPrefs类支持3中数据类型的保存和读取,浮点型,整形,和字符串型.    分别对应的函数为:    SetInt();保存整型数据:    GetInt();读取整形数据:    SetFloat();保存浮点型数据:    GetFlost();读取浮点型数据:    SetString();保存字

Ozon Tech Challenge 2020 游戏存档

(cf 即某大型线上游戏 (指比赛经历 0:02 A 是个送分题,秒了 0:04 B 不是挺傻的吗,我怎么 RE 了啊 0:12 我怎么调用错数组了啊,终于过了 0:15 C 是个送分题,wa*1 0:16 我怎么又不开 long long 啊 /dk 0:20 这 D 好难啊,自闭了 0:30 原来我知道树长什么样子的啊,那不是很 naive 0:36 T 了一发就过了 0:54 这 E 怎么这么简单啊,一下就过了. 回去看了一下榜,发现排名还挺靠前,感觉很有希望. 与此同时 Alan_zho

【Unity3D】Unity3D之 注册表动态存取游戏存档——PlayerPrefs类

1.Unity3D提供了一个用于本地持久化保存与读取的类--PlayerPrefs.工作原理非常简单,以键值对的形式将数据保存在文件中,然后程序可以根据这个名称取出上次保存的数值. 2.PlayerPrefs类支持3中数据类型的保存和读取,浮点型,整形,和字符串型.    分别对应的函数为:    SetInt();保存整型数据:    GetInt();读取整形数据: SetFloat();保存浮点型数据:    GetFlost();读取浮点型数据: SetString();保存字符串型数据