这一章中,我们从一个小小的金币数入手,讨论了数据持久化的话题。我们尽量使用引擎提供的数据存储方法,以最大可能地适应跨平台需求。这里介绍的存储方法本质上都是基于 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", ); 
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())

cocos2d-x 数据存储的更多相关文章

  1. cocos2d-x lua table数据存储

    cocos2d-x lua table数据存储 version: cocos2d-x 3.6 1. 将table转为json http://blog.csdn.net/songcf_faith/art ...

  2. Cocos2d-x手游技术分享(1)-【天天打蚊子】数据存储与音效篇

    前言: 手游项目<天天打蚊子>终于上线,特地写几篇技术分享文章,分享一下其中使用到的技术,其中使用cocos2d-x引擎,首选平台iOS,也请有iPhone或者iPad的朋友帮忙下载好评. ...

  3. Kooboo CMS技术文档之三:切换数据存储方式

    切换数据存储方式包括以下几种: 将文本内容存储在SqlServer.MySQL.MongoDB等数据库中 将站点配置信息存储在数据库中 将后台用户信息存储在数据库中 将会员信息存储在数据库中 将图片. ...

  4. Android之数据存储的五种方法

    1.Android数据存储的五种方法 (1)SharedPreferences数据存储 详情介绍:http://www.cnblogs.com/zhangmiao14/p/6201900.html 优 ...

  5. Android之网络数据存储

    一.网络保存数据介绍 可以使用网络来保存数据,在需要的时候从网络上获取数据,进而显示在App中. 用网络保存数据的方法有很多种,对于不同的网络数据采用不同的上传与获取方法. 本文利用LeanCloud ...

  6. Android之文件数据存储

    一.文件保存数据介绍 Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的.文件可用来存放大量数据,如文本.图 ...

  7. Android之SharedPreferences数据存储

    一.SharedPreferences保存数据介绍 如果有想要保存的相对较小键值集合,应使用SharedPreferences API.SharedPreferences对象指向包含键值对的文件并提供 ...

  8. Atitit 数据存储视图的最佳实际best practice attilax总结

    Atitit 数据存储视图的最佳实际best practice attilax总结 1.1. 视图优点:可读性的提升1 1.2. 结论  本着可读性优先于性能的原则,面向人类编程优先于面向机器编程,应 ...

  9. Android数据存储之SQLCipher数据库加密

    前言: 最近研究了Android Sqlite数据库(文章地址:Android数据存储之Sqlite的介绍及使用)以及ContentProvider程序间数据共享(Android探索之ContentP ...

  10. Android数据存储之GreenDao 3.0 详解

    前言: 今天一大早收到GreenDao 3.0 正式发布的消息,自从2014年接触GreenDao至今,项目中一直使用GreenDao框架处理数据库操作,本人使用数据库路线 Sqlite----> ...

随机推荐

  1. interllij idea13 clone及push工程到github上

    转自:http://my.oschina.net/okchen/blog/337556 为什么用Intelli J idea 而不是Eclipse?因为我早已无法忍受Eclipse的慢了,搞不好还会奔 ...

  2. JavaScript 纯粹对象

    JavaScript 纯粹对象 1.定义: 通过 "{}" 或者 "new Object" 创建的对象,像new Date(),new String()都不是纯 ...

  3. CSDN开源夏令营 基于Compiz的switcher插件设计与实现之compiz特效插件介绍及特效实现

    compiz自带的特效插件不够多,也不够强大.为了更好的体验compiz的特效,我们能够安装特效插件,在终端输入命令:sudo apt-get install compiz-plugins就能够下载特 ...

  4. HDU 5399 Too Simple(过程中略微用了一下dfs)——多校练习9

    Too Simple Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Probl ...

  5. 〖Linux〗Shell脚本修改输出文字颜色

    Shell函数: echocolor(){ color=${} && shift case ${color} in black) echo -e "\e[0;30m${@}\ ...

  6. PLY格式介绍

    PLY是一种电脑档案格式,全名为多边形档案(Polygon File Format)或 斯坦福三角形档案(Stanford Triangle Format).  史丹佛大学的 The Digital ...

  7. java Socket Udp聊天

    import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import jav ...

  8. Matlab 调用Oracle数据库

    本文分两部分,1.通过sql语句操作数据库.2.通过ddl操作数据库 一 通过ODBC实现到oracle的连接1)控制面板->管理工具->ODBC数据源->在系统DSN中添加orac ...

  9. github常见操作和常见错误及其解决办法

    一.常见操作 1. 使用git在本地创建一个项目的过程 $ makdir ~/hello-world //创建一个项目hello-world $ cd ~/hello-world //打开这个项目 $ ...

  10. JQueryMobile开发必须的知道的知识(转)

    移动Web页面的基本组成元素: 页面头部,页面内容,页面底部 <!DOCTYPE html> <html> <head> <title>My Page& ...