找了下发现没有类似的教程,研究了下发出了跟大家共享下:
大家都知道COCOS保存存档是用这样的方法:
UserDefault::getInstance()->setStringForKey("name", "Superman");
UserDefault::getInstance()->setIntegerForKey("age", 100);
UserDefault::sharedUserDefault()->flush();
然后你会在相应的路径找到一个:UserDefault.xml文件,这个文件就是游戏的存档了。
打开可以看到:
<?xml version="1.0" encoding="UTF-8"?>
-<userDefaultRoot>
<name>Superman</name>
<age>100</age>
</userDefaultRoot>
支持的有布尔值,浮点值,字符串等基本数值,如果要保存更高级的数据,例如你自定义的类的对象,
那么就要用到一个:setDataForKey,这个setDataForKey顾名思义,跟其他的set不同之处是它保存的
是字节流。因此我们可以把我们的对象转为字节流然后保存到存档。
自定义的类:
class A
{public:
int a;
std::string str;
public: A(){
a = 100;
str = "Hello";
}
};
将对象输入到存档:
A a, *p;p = &a;
Data data1;
data1.copy((unsigned char*)p, sizeof(A));
UserDefault::getInstance()->setDataForKey("data", data1);
UserDefault::sharedUserDefault()->flush();
读取存档:
Data data = UserDefault::sharedUserDefault()->getDataForKey("data");
A* buffer = (A*)data.getBytes();
CCLOG("%s", buffer->str.c_str());
}