问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

cocos2dx userdefault 数据会不会删除

发布网友 发布时间:2022-04-12 10:07

我来回答

1个回答

热心网友 时间:2022-04-12 11:36

游戏中一些比较简单的数据可以使用UserDefault来保存,它的存储方式为xml文件格式。

UserDefault定义如下所示:

/**
* UserDefault acts as a tiny database. You can save and get base type values by it.
* For example, setBoolForKey("played", true) will add a bool value true into the database.
* Its key is "played". You can get the value of the key by getBoolForKey("played").
*
* It supports the following base types:
* bool, int, float, double, string
*/
class CC_DLL UserDefault
{
public:
// get value methods

/**
@brief Get bool value by key, if the key doesn't exist, a default value will return.
You can set the default value, or it is false.
* @js NA
*/
bool getBoolForKey(const char* pKey);
/**
* @js NA
*/
bool getBoolForKey(const char* pKey, bool defaultValue);
/**
@brief Get integer value by key, if the key doesn't exist, a default value will return.
You can set the default value, or it is 0.
* @js NA
*/
int getIntegerForKey(const char* pKey);
/**
* @js NA
*/
int getIntegerForKey(const char* pKey, int defaultValue);
/**
@brief Get float value by key, if the key doesn't exist, a default value will return.
You can set the default value, or it is 0.0f.
* @js NA
*/
float getFloatForKey(const char* pKey);
/**
* @js NA
*/
float getFloatForKey(const char* pKey, float defaultValue);
/**
@brief Get double value by key, if the key doesn't exist, a default value will return.
You can set the default value, or it is 0.0.
* @js NA
*/
double getDoubleForKey(const char* pKey);
/**
* @js NA
*/
double getDoubleForKey(const char* pKey, double defaultValue);
/**
@brief Get string value by key, if the key doesn't exist, a default value will return.
You can set the default value, or it is "".
* @js NA
*/
std::string getStringForKey(const char* pKey);
/**
* @js NA
*/
std::string getStringForKey(const char* pKey, const std::string & defaultValue);
/**
@brief Get binary data value by key, if the key doesn't exist, a default value will return.
You can set the default value, or it is null.
* @js NA
* @lua NA
*/
Data getDataForKey(const char* pKey);
/**
* @js NA
* @lua NA
*/
Data getDataForKey(const char* pKey, const Data& defaultValue);

// set value methods

/**
@brief Set bool value by key.
* @js NA
*/
void setBoolForKey(const char* pKey, bool value);
/**
@brief Set integer value by key.
* @js NA
*/
void setIntegerForKey(const char* pKey, int value);
/**
@brief Set float value by key.
* @js NA
*/
void setFloatForKey(const char* pKey, float value);
/**
@brief Set double value by key.
* @js NA
*/
void setDoubleForKey(const char* pKey, double value);
/**
@brief Set string value by key.
* @js NA
*/
void setStringForKey(const char* pKey, const std::string & value);
/**
@brief Set binary data value by key.
* @js NA
* @lua NA
*/
void setDataForKey(const char* pKey, const Data& value);
/**
@brief Save content to xml file
* @js NA
*/
void flush();

/** returns the singleton
* @js NA
* @lua NA
*/
static UserDefault* getInstance();
/**
* @js NA
*/
static void destroyInstance();

/** deprecated. Use getInstace() instead
* @js NA
* @lua NA
*/
CC_DEPRECATED_ATTRIBUTE static UserDefault* sharedUserDefault();
/**
* @js NA
*/
CC_DEPRECATED_ATTRIBUTE static void purgeSharedUserDefault();
/**
* @js NA
*/
const static std::string& getXMLFilePath();
/**
* @js NA
*/
static bool isXMLFileExist();

private:
UserDefault();
~UserDefault();

static bool createXMLFile();
static void initXMLFilePath();

static UserDefault* _userDefault;
static std::string _filePath;
static bool _isFilePathInitialized;
};

使用如下:

UserDefault::getInstance()->setStringForKey("key","value"); //添加一个字符串数据到指定key下,UserDefault::getInstance()如果是第一次调用则会自动生成一个UserDefault.xml文件,该文件用以保存所有的UserDefault中的数据,UserDefault中的数据是以key-value的方式来存储的
UserDefault::getInstance()->getStringForKey("key","default value");//读取指定key的数据,如不存在该数据则返回指定的默认值"default value"
UserDefault::isXMLFileExist();//用以判断是否已经存在UserDefault.xml文件
如果嫌弃调用时代码过长,可以使用宏,如

#define SaveStringToXML UserDefault::getInstance()->setStringForKey

#define LoadStringFromXML UserDefault::getInstance()->getStringForKey
...

#define SaveBooleanToXML UserDefault::getInstance()->setBoolForKey

#define LoadBooleanFromXML UserDefault::getInstance()->getBoolForKey

有时需要判断是否首次运行/生成某些数据,可使用一个boolean值来进行记录,如
if(LoadBooleanFromXML("first_time",true))

{

//进行所需的首次加载操作

SaveBooleanToXML ("first_time",false);

}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
初中英语语法讲解:名词所有格 关于名词所有格一问 暗区突围画面怎么设置最好-暗区突围画面设置推荐 暗区突围打开的箱子怎么关上 保险箱关闭攻略 暗区突围 暗区突围画面设置怎么弄最佳? 暗区突围 暗区突围光影怎么调? 暗区突围 暗区突围中间白点怎么设置? 暗区突围灵敏度怎么调最稳 暗区突围灵敏度最佳设置方法 我的WIN7 64位系统无法安装打印机HP1136,请支持啊,急。驱动下载也没用... win7电脑连接不上惠普打印机Win7系统安装不了惠普HP1007打印机 solidworks中一个零件在装配体中可以移动,怎样使其父装配体中仍然移动? solidworks在装配体中怎么约束零件在一定范围内运动 西安市所有中学的名字 在延安中考能报西安的中学吗 西安乘坐K618路可抵达哪些学校(北门之后的) 西安太白路附近的中学有哪些 solidworks装配体用什么配合让一个零件可以在一定范围内移动 陕西能寄宿的重点高中!? 请问下, 西安航空618中学官网网址是多少? 2016西安航空618中学中考分数线 西安航空618中学和西安交大二附中南校区哪个更好点 我问的是高中的 最好从各个方面都说一下 上618中学怎么上 西安618所中学和西安53中, 那个好点阿? 2011西安中考录取分数线 航天中学和西安航天618中学是同一学校吗? 铺面包砖沙子厚了不结实吗? 面包砖铺装施工方法 开发商在小区铺的便宜面包砖,美其名曰海绵城市。怎么理解海绵城市,_百度问一问 普通便道砖铺设方法 面包砖怎么铺 为什么表格升序的时候第一行的抬头也跟着升序呢? 跪求在线夫妻视频,【在线观看】免费百度云资源 为什么对工资表中的序号进行升序排序 表头就跑底下去了? 怎么用一种试剂鉴别甲酸,乙醛和乙酸 Excel给A列即第一列排序时,表头也参与排序,而给其他列排序表头就不会参与排序,为什么? 用化学方法鉴定乙醇、乙醛、乙酸。 麻烦高手赐教!我在做电子表格,做分类汇总,先排序,用型号排,结果点了排序,那个表头就跑下面去了。是 如何鉴定乙酸乙酯 乙醛 乙酸 如何用一种试剂鉴别 乙醇、乙醛、乙酸、甲酸 怎样用一种试剂鉴别甲酸,乙酸,乙醇,乙醛 求高手帮忙,化学鉴别题乙醇 乙醛 乙酸。简单的鉴别方案即可 编程技术的什么是编程 技术编程 用化学方法鉴别乙醇、乙醛、乙酸 用化学方法鉴别乙醇乙醛乙酸的方法和步凑 乙醇,乙醛,乙酸的鉴别 简答题 什么是系统编程技术和在应用编程技术 如何使用一种物质鉴别乙醇,乙醛,乙酸,甲酸 编程 电子信息技术编程 什么是编程 难不难 如何编程 求详解 急!!! 64位编程技术是什么意思???应怎么理解??