Cocos2d-x教程(9)-简单的数据存储,CCUserDefault

原创 2013年12月04日 11:15:08

        转载时请注明原文出处 http://blog.csdn.net/u012945598

        源码下载地址:http://download.csdn.net/download/u012945598/6654587

        保存数据是一款游戏中必不可少的功能,保存数据的方式有很多种,今天我们来学习一下Cocos2d-x提供的CCUserDefault。

        首先 CCUserDefault只使用于存储一些简单的数据,它是将我们的数据保存到一个XML文件中。比如当我们下载了某一款软件,在第一次使用该软件的时候会有一个操作指南的画面,但是当我们退出程序再次进入的时候这个新手指南画面便不会再显示了,对于这个功能的实现我们就可以用到CCUserDefault,当用户没有使用过这个软件的时候我们从XML文件中获取出来的是一个默认值,所以会执行新手指南画面,当用户第一次使用了该软件之后,我们将这个默认值修改一下,当再次使用该软件值读取出来的便是我们修改过的值,此时便会直接进入游戏画面,不会再次执行新手指南画面了。

       而我们只用CCUserDefault实现一些简单数据存储的原因是,CCUserDfault自身有很多缺陷,无法满足我们大量保存数据的需求。

1.CCUserDefault没有类似于表的东西,所以如果你想用CCUserDefault实现一个存档的功能,你需要自己去将它写出来,这会是一个很复杂的过程。

2.CCUserDefault会讲我们的数据保存到XML文件中,这是一个明文的数据,如果有人想要篡改文件,直接修改数据即可,而且你还不知道什么时间谁把数据修改了。当然了如果有能力的可以自己增加校验,不过这又是一个比较麻烦的过程。

3.没有数据类型安全,如果你把一个字符串类型错写成了整型,是不会有错误提示的。

       所以说,如果要保存一些比较复杂的数据,还是需要使用数据库,CCUserDefault只用于保存一些简单的数据。

       下面我们来看一下CCUserDefault类中提供的方法:

        

下面我们来写一个例子,创建一个项目命名为 SaveData,创建一个新的C++文件命名为judge,.h文件代码如下:


.cpp文件代码如下:

完成上述操作后,在HelloWorld的init()函数中加入下列代码:


运行项目,此时运行项目会输出 first run,停止程序后再运行,将会输出not first run。以后运行时也将会输出not first run,因为数据已经保存到文件中。除非将程序从模拟器中删除。

cocos2d-x 浅谈数据存储-CCUserDefault

此类采用单例模式,可以通过sharedUserDefault()函数获取其唯一实例 CCUserDefault采用XML存储技术,就是一般的键值对,初学者也能容易的掌握 访问方式为CCUserDe...
  • Damon_hoo
  • Damon_hoo
  • 2014年11月25日 15:48
  • 468

cocos2d-x 数据存储 CCUserDefault

//读取CCUserDefault中存储的数据,CCUserDefault是以xml文档的方式明文存储的     //数据没有安全新,用户可以通过修改xml文档来篡改数据,需要采用加密处理 ...
  • u011545779
  • u011545779
  • 2014年03月24日 11:20
  • 485

cocos2d-x CCUserDefault 实现数据存储XML

正在做项目中有很多游戏数据要保存,常见的玩家数据这些比较简单的可以用CCUserDefault。它是cocos2d-x用来存取基本数据类型用的。保存为XML文件格式。 主要方法:(和java的m...
  • nanshan_hzq
  • nanshan_hzq
  • 2014年10月16日 10:07
  • 706

cocos2d-x CCUserDefault

CCUserDefault::sharedUserDefault()->setIntegerForKey("HighScore", 7000); CCUserDefault::sharedUserD...
  • u013866845
  • u013866845
  • 2017年06月23日 10:38
  • 63

VS2012配置cocos2d-x 3.0版本的步骤,

1)将cocos包解压 2)安装python(2.7版本下测试通过) 3)将Python的安装目录配置到Path路径(配置成功后,在命令行输入python会出现python的命令界面说明成功) ...
  • fangguishen
  • fangguishen
  • 2014年07月16日 15:22
  • 421

Follow一个教程写出来的简单cocos2d-x游戏

原教程的第一篇在这里:http://blog.csdn.net/bill_man/article/details/7426026 我用的是cocos2d-x-2.14,原文所用的是旧版,有些函数已...
  • u010639508
  • u010639508
  • 2013年08月02日 21:27
  • 1050

初学者来请教一个简单的问题!

请问如何给一个多维数组一次性附值?我查了帮助,可找不到啊~~~
  • huangyiwei37201
  • huangyiwei37201
  • 2005年04月21日 20:28
  • 526

cocos2d-x 3.0来做一个简单的游戏教程 win32平台 vs2012 详细解释献给初学者们!

原代码来自于网络,由于3
  • adady
  • adady
  • 2014年05月04日 20:53
  • 2288

cocos2d-x CCUserDefault 无法写入数据

win32下不用调用flush()就能写入文件, iphone下 不调用flush()就无法写入??
  • brook0344
  • brook0344
  • 2012年12月20日 02:31
  • 950

cocos2d-x 清除 CCUserDefault 数据

//销毁CCUserdefault CCUserDefault::purgeSharedUserDefault(); //清除临时文件 remove(CCUserDefault::getXMLF...
  • kerwin_zxc
  • kerwin_zxc
  • 2012年06月26日 15:12
  • 3443
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Cocos2d-x教程(9)-简单的数据存储,CCUserDefault
举报原因:
原因补充:

(最多只允许输入30个字)