cocos2d-x 数据存储
这一章中,我们从一个小小的金币数入手,讨论了数据持久化的话题。我们尽量使用引擎提供的数据存储方法,以最大可能地适应跨平台需求。这里介绍的存储方法本质上都是基于 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 数据存储的更多相关文章
- cocos2d-x lua table数据存储
cocos2d-x lua table数据存储 version: cocos2d-x 3.6 1. 将table转为json http://blog.csdn.net/songcf_faith/art ...
- Cocos2d-x手游技术分享(1)-【天天打蚊子】数据存储与音效篇
前言: 手游项目<天天打蚊子>终于上线,特地写几篇技术分享文章,分享一下其中使用到的技术,其中使用cocos2d-x引擎,首选平台iOS,也请有iPhone或者iPad的朋友帮忙下载好评. ...
- Kooboo CMS技术文档之三:切换数据存储方式
切换数据存储方式包括以下几种: 将文本内容存储在SqlServer.MySQL.MongoDB等数据库中 将站点配置信息存储在数据库中 将后台用户信息存储在数据库中 将会员信息存储在数据库中 将图片. ...
- Android之数据存储的五种方法
1.Android数据存储的五种方法 (1)SharedPreferences数据存储 详情介绍:http://www.cnblogs.com/zhangmiao14/p/6201900.html 优 ...
- Android之网络数据存储
一.网络保存数据介绍 可以使用网络来保存数据,在需要的时候从网络上获取数据,进而显示在App中. 用网络保存数据的方法有很多种,对于不同的网络数据采用不同的上传与获取方法. 本文利用LeanCloud ...
- Android之文件数据存储
一.文件保存数据介绍 Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的.文件可用来存放大量数据,如文本.图 ...
- Android之SharedPreferences数据存储
一.SharedPreferences保存数据介绍 如果有想要保存的相对较小键值集合,应使用SharedPreferences API.SharedPreferences对象指向包含键值对的文件并提供 ...
- Atitit 数据存储视图的最佳实际best practice attilax总结
Atitit 数据存储视图的最佳实际best practice attilax总结 1.1. 视图优点:可读性的提升1 1.2. 结论 本着可读性优先于性能的原则,面向人类编程优先于面向机器编程,应 ...
- Android数据存储之SQLCipher数据库加密
前言: 最近研究了Android Sqlite数据库(文章地址:Android数据存储之Sqlite的介绍及使用)以及ContentProvider程序间数据共享(Android探索之ContentP ...
- Android数据存储之GreenDao 3.0 详解
前言: 今天一大早收到GreenDao 3.0 正式发布的消息,自从2014年接触GreenDao至今,项目中一直使用GreenDao框架处理数据库操作,本人使用数据库路线 Sqlite----> ...
随机推荐
- 远程binlog
binlog介绍 binlog,即二进制日志,它记录了数据库上的所有改变. 改变数据库的SQL语句执行结束时,将在binlog的末尾写入一条记录,同时通知语句解析器,语句执行完毕. binlog格式 ...
- taro alias 的使用
用来配置目录别名,从而方便书写代码引用路径.例如,使用相对路径书写文件引用如下: import A from '../../componnets/A' import Utils from '../.. ...
- 浏览器 UA 判断
export const inBrowser = typeof window !== 'undefined' export const inWeex = typeof WXEnvironment != ...
- 【FinacialKnowledge】财务报表及名词解释
1.财务报表 以下三张表为:资产负债表.利润表.现金流量表 ...
- 科学计算法帮助类MathUtils
import java.math.BigDecimal; import java.math.MathContext; import java.math.RoundingMode; /** * 科学计算 ...
- 老男孩Linux.shell.RHCE运维初中高级50G附解压密码
学习Linux,好的教程.使学习事半功倍! 老男孩Linux.shell.RHCE运维初中高级 下载地址: http://pan.baidu.com/s/1hsQOb2W 密码: h4hs 解压密码: ...
- Java面试基础部分合集
写在前面:这篇文章对于在Java方面已经很牛逼的大手,就没必要看了,因为对于你们来说,这tm简直太简单了.... 面试我们都经历过,你真的懂面试吗?针对面试我只想说一点,面试的目的不是让考官知道你怎么 ...
- 【LeetCode】51. N-Queens
N-Queens The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no tw ...
- 【LeetCode】80. Remove Duplicates from Sorted Array II (2 solutions)
Remove Duplicates from Sorted Array II Follow up for "Remove Duplicates":What if duplicate ...
- 【php】基础学习4
这部分主要包括php面向对象的程序设计,具体如下: <html xmlns=http://www.w3.org/1999/xhtml> <head> <meta http ...