您的位置:首页 > 移动开发 > Cocos引擎

cocos2dx之UserDefault: 数据存储及加密 (上)

2015-12-18 08:59 381 查看
首先说明一下楼主使用的cocos2dx的版本是3.4

大家知道有时候游戏需要在本地存储一些数据,比如单机里面的最高分之类的。我们可以根据要存储的数据类型来调用一下接口:

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里面中的数据这个问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: