首先说明一下楼主使用的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里面中的数据这个问题

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐