当前位置: 首页 > news >正文

哈尔滨品牌建站软件/湖南企业seo优化

哈尔滨品牌建站软件,湖南企业seo优化,网站推广必备的工具,濮阳网络游戏公司原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://goldlion.blog.51cto.com/4127613/770754cocos2d-x学习笔记16:记录存储1:CCUserDefault 一、简述CCUserDefalt作为…
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://goldlion.blog.51cto.com/4127613/770754

 cocos2d-x学习笔记16:记录存储1:CCUserDefault


一、简述
CCUserDefalt作为NSUserDefalt类的cocos2d-x实现版本,承担了cocos2d-x引擎的记录实现功能。

他的接口非常简单。
  1. bool    getBoolForKey (const char *pKey, bool defaultValue=false
  2.     //Get bool value by key, if the key doesn't exist, a default value will return.  
  3. int     getIntegerForKey (const char *pKey, int defaultValue=0) 
  4.     //Get integer value by key, if the key doesn't exist, a default value will return.  
  5. float   getFloatForKey (const char *pKey, float defaultValue=0.0f) 
  6.     //Get float value by key, if the key doesn't exist, a default value will return.  
  7. double  getDoubleForKey (const char *pKey, double defaultValue=0.0) 
  8.     //Get double value by key, if the key doesn't exist, a default value will return.  
  9. std::string     getStringForKey (const char *pKey, const std::string &defaultValue=""
  10.     //Get string value by key, if the key doesn't exist, a default value will return.  
  11. void    setBoolForKey (const char *pKey, bool value) 
  12.     //Set bool value by key.  
  13. void    setIntegerForKey (const char *pKey, int value) 
  14.     //Set integer value by key.  
  15. void    setFloatForKey (const char *pKey, float value) 
  16.     //Set float value by key.  
  17. void    setDoubleForKey (const char *pKey, double value) 
  18.     //Set double value by key.  
  19. void    setStringForKey (const char *pKey, const std::string &value) 
  20.     //Set string value by key.  

在helloworld中增加如下代码:
  1. CCUserDefault *save=CCUserDefault::sharedUserDefault(); 
  2. save->setBoolForKey("bool_value",true); 
  3. save->setDoubleForKey("double_value",0.1); 
  4. save->setFloatForKey("float_value",0.1f); 
  5. save->setIntegerForKey("integer_value",1); 
  6. save->setStringForKey("string_value","test"); 

然后写入存档就完成了。
读取也很简单,用对应的get函数即可。但是,我不建议你使用get函数的缺省返回值,尤其是在没有生成存档的时候。

二、CCUserDefalt的问题
1.没有记录和表的概念
你会发现,如果要设置多存档,必须自己操作,而且代码会变得复杂,容易出错。
对于简单的游戏可以使用CCUserDefalt,但是对于复杂游戏,可以考虑使用SQLite。

2.没有数据类型安全
比如,如果你错写把一个Integer按Bool读取,是没有错误提示的

3.没有存档数据完整性的校验
我们找到之前的存档记录,用CCUserDefault::getXMLFilePath()可以获得存档位置,打开它

可以看到存档是明文的xml,如果玩家篡改了数据,你无从知晓。这个可以自己增加一个校验,比如crc,哈希之类的。

三、存档和游戏初始化的建议流程

一个建议的流程是:
  1. if(!档案不存在) 
  2.      使用缺省数据写入存档; 
  3. 读取存档并初始化数据; 

这是我在开发时使用的,在没有存档时首先写入一个,然后再读取。这减小了编码量,保证主要流程清晰。

那么如何判断存档不存在呢?我之前想用标准c++的fstream函数,但是如果从CCUserDefalt中用getXMLFilePath获得存档路径的话。如果此时存档文件不存在,就会自动生成一个。所以接下来的判断存档是否存在代码就会失效了。

yanghuiliu的blog中提到了一个方法,我其实不建议使用这种缺省返回值的方式,但是cocos2dx就设计成这样了,所以可以使用这种方法。

  1. CCUserDefault *save=CCUserDefault::sharedUserDefault(); 
  2. if(save->getBoolForKey("isExisted")) 
  3.      //相关操作 
  4.      save->setBoolForKey("isExisted",true); 

参考文献:
cocos2d-x中保存用户游戏数据CCUserDefault:http://blog.csdn.net/yanghuiliu/article/details/6912612

 

本文出自 “老G的小屋” 博客,请务必保留此出处http://goldlion.blog.51cto.com/4127613/770754

http://www.lbrq.cn/news/1264087.html

相关文章:

  • dw做网站插入百度地图/应用市场
  • 风雨同舟网站建设/网站如何注册
  • 广州官网建站/线下引流推广方法
  • 青浦网站优化/seo 优化 工具
  • 云南建设厅网站/产品推广方式
  • 政府与机构类网站/理发培训专业学校
  • 我想做一个网站怎么做的/销售培训课程一般有哪些
  • 如何更改公司网站内容/网络推广的方法和技巧
  • 阜新门户网站建设/网站seo的方法
  • 免费查公司查老板/seo优化推广工程师
  • 建设网站文章哪里下载/企业网站seo案例分析
  • 大连网站优化多少钱/投放广告的网站
  • 免费网站空间申请教程/如何推广app
  • 招商网站开发文档/免费推广的网站有哪些
  • 启航做网站怎么样/微信推广方式有哪些
  • 山西网站建设开发/百度搜索推广收费标准
  • 北京电脑培训网站/百度搜索关键词推广
  • 智能网站建设/怎么样建一个网站
  • wordpress 文章页面模板/深圳关键词优化报价
  • 怎么做网站才能吸引人/产品软文范例800字
  • 湖南涟钢建设有限公司网站/提交链接
  • 网站建设-好发信息网/六安seo
  • 返利网站方案/域名查询网址
  • 刷赞网站推广软件/数字经济发展情况报告
  • 广州做企业网站/百度网址大全网站
  • 继续教育培训网站开发/深圳百度地图
  • 做简单的网站首页/百度官网客服
  • 网站建设脱颖而出/seo模拟点击有用吗
  • zero的大型网站seo教程/关键词
  • 网站推广和宣传的方法/爱站网关键词工具
  • 【视频内容创作】PR的关键帧动画
  • 《人形机器人的觉醒:技术革命与碳基未来》——类人关节设计:人工肌肉研发进展及一款超生物肌肉Hypermusclet的设计与制造
  • 渗透作业4
  • sifu mod制作 相关经验
  • 前端与后端部署大冒险:Java、Go、C++三剑客
  • 数字化转型驱动中小制造企业的质量管理升级