cocos2d游戏永久保存数据的方法

第一种:通过外部文件加载比如: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);
    }

猜你喜欢

转载自blog.csdn.net/piyixia/article/details/88420961