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);

imageimage

測試過程當中並發現不調用flush()方法也能及時寫到xml文件中,但仍是要記得調用。spa

相關文章
相關標籤/搜索