第一种:通过外部文件加载比如:Xml,json
第二种:上次服务端
第三中:编辑器保存,比如Unite3D中prefabs(预制体)
因为最近学习cocos,里面有UserDefault和FiledUlist
UserDefault用法:
//获取数据
// 保持角色的位置
UserDefault* userDef = UserDefault::getInstance();
//保持数据
userDef->setFloatForKey("x", getOwner()->getPositionX());
userDef->setFloatForKey("y", getOwner()->getPositionY());
userDef->flush();//保持到文件中
std::string path = userDef->getXMLFilePath();
log("path = %s \n", path.c_str());
//读取数据
//找不到X标签就返回参数2的值
float x = UserDefault::getInstance()->getFloatForKey("x",getOwner()->getPositionX());
float y = UserDefault::getInstance()->getFloatForKey("y", getOwner()->getPositionY());
getOwner()->setPosition(x, y);
FiledUlist用法:
//获取数据
//创建一个FileUtils的对象
FileUtils* fileUtils = FileUtils::getInstance();
①用字符串的方式写入
fileUtils->writeStringToFile("ABCEF","MyData.dat");
②用Data的方式写入
cocos2d::Data data;
std::string str = "ABFCD123";
data.copy((const unsigned char*)str.c_str(), 9);
fileUtils->writeDataToFile(data, "MyData1.dat");
③用ValueVector的方式写入
cocos2d::ValueVector vVector;
cocos2d::Value x(10);
cocos2d::Value y(20);
cocos2d::Value str("ABFDDASD");
vVector.push_back(x);
vVector.push_back(y);
vVector.push_back(str);
fileUtils->writeValueVectorToFile(vVector,"ValueVector.dat");
④用ValueMap的方式写入
cocos2d::ValueMap vMap;
vMap["x"] = 10;
vMap["y"] = 20;
cocos2d::ValueMap map;
map["name"] = "student";
vMap["map"] = map;
fileUtils->writeValueMapToFile(vMap, "ValueMap.dat");
//读取,读取只要在get后面读取对应内容就好了
if (FileUtils::getInstance()->isFileExist("ValueMap.dat"))
{
cocos2d::ValueMap map = FileUtils::getInstance()->getValueMapFromFile("ValueMap.dat");
float x = map["x"].asFloat();
float y = map["y"].asFloat();
log("x = %f \n y = %f \n", x, y);
}