保存遊戲中的數據時遊戲中經常使用的功能,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文件中,但仍是要記得調用。spa