cocos2d-x 数据存储

游戏数据存储与优化:Cocos2d-x与SQLite的实践
本篇博客探讨了如何使用Cocos2d-x提供的UserDefault、FileUtil、XML、JSON及SQLite进行游戏数据持久化,重点介绍了针对不同数据规模的存储方法及性能优化策略。

  这一章中,我们从一个小小的金币数入手,讨论了数据持久化的话题。我们尽量使用引擎提供的数据存储方法,以最大可能地适应跨平台需求。这里介绍的存储方法本质上都是基于 XML 的,对于 1 MB 以下的存储规模来说,已经完全足够了,而更大型的存储场景在目前的移动游戏中并不常见。在必要的时候,也可以使用 SQLite 来为数据持久化提速调优。 下面 总结一下本章的重要知识点。

UserDefault:它是 Cocos2d-x 提供的一个十分便捷的本地存储解决方案。利用 UserDefault 类,可以存取简单的键值数据。

FileUtil:提供了对本地文件存取的基本功能。与 UserDefault 相比,FileUtil 更为底层,因此也适合用于存取更加庞大的二进制文件。

XML:Cocos2d-x 中常见的文件类型,用于存储配置数据或游戏资料。XML 的优势在于描述性极强,因此易于编辑。

JSON:网络传输中常用的对象描述格式,与 JavaScript 兼容,在广告平台等网络交换数据的情形中十分常见。

SQLite:轻量级的关系数据库,用于高速且安全地在本地存储数据。在对性能要求较高时,可以考虑使用 SQLite 存储数据。

 

CCUserDefault

  正在做项目中有很多游戏数据要保存,常见的玩家数据这些比较简单的可以用CCUserDefault。它是cocos2d-x自带用来存取基本数据类型用的。CCUserDefault并不是加密的保存的信息是明文的,文件格式为XML。Key -Value,key索引Value值;

  提供的存储都是些基础类型,bool,int,string,double,float,方法很容易懂:存储使用set,获取使用get。

void setBool/Integer/Float/Double/StringForKey(const char* pKey, value); 
void getBool/Integer/Float/Double/StringForKey(const char* pKey, Defalutvalue);

  每一种数据类型的setXXXForkey方法中都有调用写文件步骤,也就是说,每次调用setXXXForKey,就会往文件中写一条记录,当然也可以在写文件末尾调用flush()函数。

使用举例:
UserDefault::getInstance()->setStringForKey("name", "dsw"); 
UserDefault::getInstance()->setIntegerForKey("age", 33); 
UserDefault::getInstance()->setDoubleForKey("high", 1.71);
UserDefault::getInstance()->setBoolForKey("marign", false); 

string ret = CCUserDefault::
getInstance()->getStringForKey("name");
CCLOG("name is %s", ret.c_str());

  注:UserDefault提供了默认的文件名(XML_FILE_NAME)和读写路径(FileUtils::getInstance()->getWritablePath())

 

 

转载于:https://www.cnblogs.com/DswCnblog/p/3679972.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值