今天白白跟大家分享一下cocos2dx中游戏的存储及需要注意的事项

cocos2dx中自带了存储类:CCUserDefault ,倘若需要存储的数据量教大的话,建议使用数据库来存储

现在先给大家看一下CCUserDefault的API

Public Member Functions

    ~CCUserDefault ()
bool getBoolForKey (const char *pKey, bool defaultValue=false)
Get bool value by key, if the key doesn't exist, a default value will return.
int getIntegerForKey (const char *pKey, int defaultValue=0)
Get integer value by key, if the key doesn't exist, a default value will return.
float getFloatForKey (const char *pKey, float defaultValue=0.0f)
Get float value by key, if the key doesn't exist, a default value will return.
double getDoubleForKey (const char *pKey, double defaultValue=0.0)
Get double value by key, if the key doesn't exist, a default value will return.
std::string getStringForKey (const char *pKey, const std::string &defaultValue="")
Get string value by key, if the key doesn't exist, a default value will return.
void setBoolForKey (const char *pKey, bool value)
Set bool value by key.
void setIntegerForKey (const char *pKey, int value)
Set integer value by key.
void setFloatForKey (const char *pKey, float value)
Set float value by key.
void setDoubleForKey (const char *pKey, double value)
Set double value by key.
void setStringForKey (const char *pKey, const std::string &value)
Set string value by key.
void flush ()
Save content to xml file.
Static Public Member Functions static CCUserDefault * sharedUserDefault ()
static void purgeSharedUserDefault ()
static const std::string & getXMLFilePath ()

大家可以清楚的看到CCUserDefault这个类,存储是使用的是Key -Value,利用key来索引Value的值

现在我们举一个例子:


//存储并获取数据
CCUserDefault::sharedUserDefault()->setStringForKey("name", "baibai");
CCUserDefault::sharedUserDefault()->flush();//写了东西要提交
std::string name = CCUserDefault::sharedUserDefault()->getStringForKey("name");
CCLOG("name: %s ", name.c_str());

好了,现在我们就能打印出name: baibai

注意事项:

1、写好了数据一定要记得提交,CCUserDefault会把数据存储在UserDefault.xml中,这个文件就在cocos2d-x-2.2的Debug.win32目录下。可以打开这个文件查看储存的数据。

2、key有遵循命名规则,千万不能想当然的给他随意命名,白白之前就在这上面吃过亏,希望大家谨记。

白白之前给key命名了score[i]这是不对的。

我们再来写一个例子

	//保存
for (int i = 0; i < 5; ++i)
{
CCString* setScore = CCString::createWithFormat("a_%d",i);
CCUserDefault::sharedUserDefault()->setIntegerForKey(setScore->getCString(), a[i]);
}
CCUserDefault::sharedUserDefault()->flush();//提交
//获取
for (int i = 0; i < 5; ++i)
{
CCString* getScore = CCString::createWithFormat("a_%d",i);
int score[i] = CCUserDefault::sharedUserDefault()->getIntegerForKey(getScore->getCString());
CCLOG("score[%d]: %d", i, score[i]);
}

ok,现在这些数据就能做为排行榜使用了

cocos2dx游戏存储举例及其注意事项的更多相关文章

  1. 【Cocos2d-x游戏开发】Cocos2d-x中的弱联网技术

    在上一篇博客中,我们一起学习了如何在Cocos2d-x中存储数据和读取信息,本篇博客我们将一起讨论和数据存储同样重要的联网技术. 一.弱联网技术介绍 在网络游戏中许多重要的功能都需要网络连接,而根据需 ...

  2. cocos2d-x游戏是怎么跑起来的

    虽然cocos2d-x v3.0 alpha版已经出来了,也改进了不少,有兴趣的可以去尝尝鲜.因为后面可能还会配合cocoStudio写一下博客,而现在v1.0.0.0版本需要配合cocos2d-x ...

  3. 【Cocos2d-X游戏实战开发】捕鱼达人之开发前准备工作(一)

    本系列学习教程使用的是cocos2d-x-2.1.4(最新版为cocos2d-x-2.1.5) 博主发现前两个系列的学习教程被严重抄袭,在这里呼吁大家请尊重开发者的劳动成果, 转载的时候请务必注明出处 ...

  4. 【Cocos2d-X游戏实战开发】捕鱼达人之单例对象的设计(二)

    本系列学习教程使用的是cocos2d-x-2.1.4(最新版为cocos2d-x-2.1.5)    博主发现前两个系列的学习教程被严重抄袭,在这里呼吁大家请尊重开发者的劳动成果, 转载的时候请务必注 ...

  5. cocos2d-x游戏引擎核心之三——主循环和定时器

    一.游戏主循环 在介绍游戏基本概念的时候,我们曾介绍了场景.层.精灵等游戏元素,但我们却故意避开了另一个同样重要的概念,那就是游戏主循环,这是因为 Cocos2d 已经为我们隐藏了游戏主循环的实现.读 ...

  6. 转载:Cocos2D-x 游戏接入 Windows 设备所需做的六件事

    原文地址:http://msopentech.com/zh-hans/blog/2014/05/09/cocos2d-x-%E6%B8%B8%E6%88%8F%E6%8E%A5%E5%85%A5-wi ...

  7. [转]eoe社区cocos2d-x游戏引擎知识大汇总

    [eoeAndroid 社区]特意为大家汇总了cocos2d-x知识贴,分量十足,纯正干或.从基础教程到游戏应用的开发,我们不让知识流失,我们要做知识的搬运工还有加工 师.希望大家能够一起的学习,和大 ...

  8. cocos2d-x游戏开发实战原创视频讲座系列1之2048游戏开发

     cocos2d-x游戏开发实战原创视频讲座系列1之2048游戏开发 的产生 视持续更新中.... 视频存放地址例如以下:http://ipd.pps.tv/user/1058663622     ...

  9. Cocos2d-x游戏中默认的AndroidManifest.xml的解析

    直接上代码说明: <?xml version="1.0" encoding="utf-8"? > <!-- xmlns:android=&qu ...

随机推荐

  1. CSS3组件化之单线箭头

    <div class="parent-box"> <div class="top-arrow"></div> <div ...

  2. python opencv3 视频文件的读写

    git: https://github.com/linyi0604/Computer-Vision # coding:utf8 import cv2 """ 读取视频文件 ...

  3. bootm命令移植

    <bootm作用> 为linux内核的启动准备条件 <bootloader作用总结> (1)初始化软/硬件(内存硬件/外部设备/堆栈) (2)启动操作系统 <uImagi ...

  4. codevs 2292 图灵机游戏

    2292 图灵机游戏  时间限制: 1 s  空间限制: 64000 KB  题目等级 : 黄金 Gold   题目描述 Description [Shadow 1]第二题 Shadow最近知道了图灵 ...

  5. PHP获取文件大小详解

    通过PHP filesize函数可直接获取文件大小(单位字节),如:filesize('test.png') echo filesize('test.png'); 查看test.png图片属性: 文件 ...

  6. android点滴之ContentObserver的使用

    一概念 ContentObserver用于观察(捕捉)特定Uri引起的数据的变化,继而做一些对应的处理,当ContentObserver所观察的Uri发生变化时,便会触发它. 从概念看ContentO ...

  7. Java工程师成神之路 转

      一.基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http://www.jcp.org/en/jsr/detail?id=133 http:/ ...

  8. JEECG第二期深入使用培训(报名截止2014-06-21)

    JEECG第二期深入使用培训(报名截止2014-06-21) JEECG深度研究-交流碰撞火花,你学会的不不过JEECG,很多其它的是软件架构思想 http://www.jeecg.org/forum ...

  9. ASP.NET WEB API 调试

    ASP.NET WEB API 中的路由调试与执行过程跟踪 http://www.cnblogs.com/Irving/p/4305493.html 路由调试 RouteDebugger 是调试 AS ...

  10. java基础学习总结——static关键字

    一.static关键字