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