• 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", 33); 
    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())

     

     

  • 相关阅读:
    2019 USP Try-outs 练习赛
    XDTIC2019招新笔试题 + 官方解答
    2019 ICPC 南昌网络赛
    ICPC 2019 徐州网络赛
    Berlekamp Massey算法求线性递推式
    ICPC 2018 徐州赛区网络赛
    CCPC 2019 网络赛 1006 Shuffle Card
    CCPC 2019 网络赛 1002 array (权值线段树)
    CCF-CSP题解 201803-4 棋局评估
    CCF-CSP题解 201803-3 URL映射
  • 原文地址:https://www.cnblogs.com/DswCnblog/p/3679972.html
Copyright © 2020-2023  润新知