cocos2dx之UserDefault: 数据存储及加密 (上)
2015-12-18 08:59
381 查看
首先说明一下楼主使用的cocos2dx的版本是3.4。
大家知道有时候游戏需要在本地存储一些数据,比如单机里面的最高分之类的。我们可以根据要存储的数据类型来调用一下接口:
这里我们先把封装一下获取和设置数据的接口,通过类型来进行数据存储:
下面举个例子(这里存的是最高分,类型定为 int):
设置最高分:
获取最高分:
这样设置和获取的数据是未加密的,也就是说如果用户直接改UserDefault.xml中的值,那就相当于作弊了。
下一节我们来分析如何解决用户直接修改UserDefault.xml里面中的数据这个问题
大家知道有时候游戏需要在本地存储一些数据,比如单机里面的最高分之类的。我们可以根据要存储的数据类型来调用一下接口:
bool类型: cc.UserDefault:getInstance():setBoolForKey(key, value) cc.UserDefault:getInstance():getBoolForKey(key) int类型: cc.UserDefault:getInstance():setIntegerForKey(key, value) cc.UserDefault:getInstance():getIntegerForKey(key) string类型: cc.UserDefault:getInstance():setStringForKey(key, value) cc.UserDefault:getInstance():getStringForKey(key) float类型: cc.UserDefault:getInstance():setFloatForKey(key, value) cc.UserDefault:getInstance():getFloatForKey(key) double类型: cc.UserDefault:getInstance():setDoubleForKey(key, value) cc.UserDefault:getInstance():getDoubleForKey(key)
这里我们先把封装一下获取和设置数据的接口,通过类型来进行数据存储:
-- 获取数据接口 function GetClientUserData( key, valueType ) if valueType == "bool" then return cc.UserDefault:getInstance():getBoolForKey(key) elseif valueType == "int" then return cc.UserDefault:getInstance():getIntegerForKey(key) elseif valueType == "string" then return cc.UserDefault:getInstance():getStringForKey(key) elseif valueType == "float" then return cc.UserDefault:getInstance():getFloatForKey(key) elseif valueType == "double" then return cc.UserDefault:getInstance():getDoubleForKey(key) end end --设置数据接口 function SetClientUserData( key, value, valueType ) if valueType == "bool" then cc.UserDefault:getInstance():setBoolForKey(key,value) elseif valueType == "int" then cc.UserDefault:getInstance():setIntegerForKey(key, value) elseif valueType == "string" then cc.UserDefault:getInstance():setStringForKey(key, value) elseif valueType == "float" then cc.UserDefault:getInstance():setFloatForKey(key,value) elseif valueType == "double" then cc.UserDefault:getInstance():setDoubleForKey(key, value) end end
下面举个例子(这里存的是最高分,类型定为 int):
设置最高分:
local bestScore = 100 SetClientUserData("bestScore", 100, "int") --> 这样设完后,本地的UserDefault.xml中就会有相应的值。
获取最高分:
local bestScore = GetClientUserData("bestScore", "int") --> 100
这样设置和获取的数据是未加密的,也就是说如果用户直接改UserDefault.xml中的值,那就相当于作弊了。
下一节我们来分析如何解决用户直接修改UserDefault.xml里面中的数据这个问题
相关文章推荐
- Cocos2d-x优化中纹理优化
- cocos2dx
- CocosBuilder使用总结
- Cocos2dx 3.0 交流篇
- Quick-Cocos2d-x3.3配置文件分析
- cocos2d-x之动作类说明
- Cocos2d-x应用:保存背景音乐和音效设置
- quick-cocos2d-x开发工具sublime text及其强力插件QuickXDev
- 在cocos2d-x中动态绘制二维码
- cocos2d-js 在Chrome的最小字体
- COCOS学习笔记--Cocos3.x引擎开发环境搭建
- 【Cocos2d-x 粒子系统】火球用手指飞起来
- cocos2d 和 cocos2d-x引擎选择
- cocos2dx如何使用CCFileUtils进行文件查找的
- cocos2d-x学习笔记(14)笨木头游戏系列LittleRunner
- cocos2d移植到安卓引入第三方so文件时候编译会删除解决方案
- cocos2d-js html5自定义鼠标图案及设置原点方法
- cocos2d 中文显示问题解决
- cocos2d-lua里sprite button imageview换图片
- cocos2d-lua里 如何绑定按钮button的点击事件click