开发者社区> ghost丶桃子> 正文

【IOS-COCOS2D-X 游戏开发之五】游戏存储之COCOS2DX自带CCUSERDEFAULT类详解;

简介:
+关注继续查看
本站文章均为 李华明Himi 原创,转载务必在明显处注明: 
转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/iphone-cocos2dx/653.html

本篇跟大家分享下Cocos2dX中的存储,其中也介绍些细节容易犯错的问题;

在Cocos2dX中提供了自带存储类:CCUserDefault  ,当然了这里Himi强调一点,如果你的数据量比较大,建议使用SQL存储比较适合,另外一点要注意的是,尽可能不要在Cocos2dX中使用与平台相关的api进行开发,例如Xcode使用Cocos2dX进行开发游戏时不小心使用了iOS的控件/组件在项目中,那么当移植到Android等平台的时候就肯定异常费劲,估计连正常运行都不可能,因为其他平台不可能正好有iOS的这些控件,即使有也肯定底层实现不一样!换句话而言,神马功能都使用Cocos2dX api实现,尽量都向X靠拢吧,所以这里的存储我也使用X自带的CCUserDefault;至少使用Cocos2dX自带的对于跨平台这一块肯定支持的比较好啦;

言归正传,先大致介绍一下这个类的API:

从以上可以一目了然CCUserDefault的使用和功能,哈希表结构,Key -Value,key索引Value值;

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

那么最后static方法中可以看到CCUserDefault类留出了一个sharedUserDefault作为接口供开发者使用,那么大概介绍后,下面我们来写几段代码验证下:

这里要注意,    CCUserDefault中有个  flush()的函数,这个用来将数据写入xml文件中,也就是说当你使用setXX的一些函数后记得提交(调用一下flush函数)

OK,下面是控制台输入的结果:

最后一句验证了我们的存储没问题,那么我们现在验证是否真的存在xml中了,首先停止当前运行的项目,然后删除刚才代码替换如下代码:

然后重新运行此项目,观察控制台打印如下:

通过刚才的key->”key”,正常获取到“himi”这个字符串了,OK,监测没问题;

那么一般情况下我们会需要一个方法就是判定当前项目是否已经有存储数据的xml文件存在了,那么Himi这里说下,Cocos2dX默认源码中有这个方法,但是并没有提供给开发者使用,因为此函数被private私有了,此函数源码如下图所示:

       那么既然如此Himi这里就自定义了一个检测是否已存在数据xml的函数提供大家使用:(提醒:很多童鞋该说啦,为什么不直接修改源码将其public呢?!其实Himi也这么想,但是如果你后期使用了新的Cocos2dX的版本,或者同事机器的Cocos2dX并没有这么修改源码都会产生错误,反过来说,既然能很容易的写出一个判断的方法何必去动它呢,不是么?哈哈!)

备注:当存储数据的xml不存在的时候,你的第一次存储数据的时候默认会创建,路径在你的app下的documents,如下图所示:

 

 那么这里Himi强调一点!大家要注意setXX的函数的参数,例如以下这个函数:

setStringForKey (const char *pKey, const std::string &value)

第一个参数是const char*类型,不是string!!!!(Himi因为这个原因浪费不少时间,悲剧阿。)

Himi当时存储写了如下代码,造成错误,如下:

错误截图如下:(存储的key变成了路径。。。。《数据是Himi加密后的》)

   哎,郁闷,这里Himi犯错希望童鞋们不要再范此错误,之前Himi一直想找 itoa 找个函数,但是怎么都找不到!(c++  应该存在的整形转字符串),但是Cocos2dX中没有,并且最后Himi使用了与Cocos2dX引擎中的实现itoa的源码,发现如下:

Cocos2dX自带的这个CCUserDefault并不是加密的,而是明文并且是.xml格式的,所以后续Himi准备写一篇使用base64来进行加密的文章供大家参考;

本篇源码下载: “SaveDataForCocos2dx.zip”        下载地址:  http://vdisk.weibo.com/s/hq2Ys

 


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
iOS开发:下架App的步骤
首先登陆你的 iTunes Connect
191 0
2022 ios APP最新iOS开发上架测试教程
2022 ios APP最新iOS开发上架测试教程
68 0
[ios开发]-APP-上架流程
由于苹果的机制,在非越狱机器上安装必须通过官方的Appstore, 开发者开发好应用后上传Appstore,也需要通过审核等环节。 AppCan作为一个跨主流平台的一个开发平台,也对ipa包上传Appstore作了支持。 本文从三个流程来介绍如何实现AppCan在 线编译出ipa包,以及上传到苹果Appstore。
41 0
iOS开发之打包上传到App Store——(一)各种证书的理解
iOS开发之打包上传到App Store——(一)各种证书的理解
66 0
IOS APP开发:苹果app从开发到上架教程详解
IOS APP开发:苹果app从开发到上架教程详解
97 0
IOS开发:UniAPP实现BLE低功耗蓝牙开发1
1、Uni-app介绍 2、Uni-app优点 3、BLE开发流程
222 0
iOS开发 - 穿针引线之内存管理(二)
iOS开发 - 穿针引线之内存管理
45 0
iOS开发 - 穿针引线之内存管理(一)
iOS开发 - 穿针引线之内存管理
59 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Facebook iOS App技术演化十年之路
立即下载
From Java_Android to Swift iOS
立即下载
深入剖析 iOS 性能优化
立即下载