TOLua实现数据持久化的方法

TOLua实现数据持久化的方法
近期研究了TOLua框架,查阅资料后,发现针对TOLua如何将新建类添加至Table表中,及ToLua如何实现本地数据持久化没有介绍,经过自己研究总结如下:
第一步建立一个类及列表
–声明,这里声明了类名还有属性,并且给出了属性的初始值。
–定义类中的属性可自行添加
UserData = {Name=”“,Pwd=”“}
– function UserData.Instance()
– if UserData.instance == nil then
– UserData.instance = UserData:New(“”,”“)
– end
– return UserData.instance
– end
–这句是重定义元表的索引,就是说有了这句,这个才是一个类。
UserData.__index = UserData
–构造体,构造体的名字是随便起的,习惯性改为New()
function UserData:New(Name,Pwd)
local self = {}; –初始化self,如果没有这句,那么类所建立的对象改变,其他对象都会改变
setmetatable(self, UserData); –将self的元表设定为Class
–UserData = {name=”“,Pwd=”“}
self.Name = Name;
self.Pwd = Pwd;
return self; –返回自身
end
UserData.userList = {}

第二步封装两个方法(我在Game.lua脚本里面写的)
—-数据持久化
–注册UserData
require”Logic/UserData”
–封装保存数据的方法
function Game.SaveUserData(userData)
table.insert( UserData.userList,userData )
序列化
local data = json.encode(UserData.userList)
log(data)
log(“———=———”)
–W 打开只写文件,若文件存在则文件长度清为0,
–即该文件内容会消失。若文件不存在则建立该文件。
–a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,
–即文件原先的内容会被保留。(EOF符保留)
–b 二进制模式,如果文件是二进制文件,可以加上b
–+ 号表示对文件既可以读也可以写
local file =io.open(“C:/Users/Administrator/Desktop/RPGToLUa/RPG_ToLua/Assets/LuaFramework/Lua/GameData/UserData.txt”,”wb”)
file:write(data)
–io.close(file)–简单模式
file:close()–同一时间处理多个文件
log(data)
End

–封装解析数据的方法

function Game.ParseUserData()
local file =io.open(“C:/Users/Administrator/Desktop/RPGToLUa/RPG_ToLua/Assets/LuaFramework/Lua/GameData/UserData.txt”,”rb”)
–”*a”从当前位置读取整个文件。例:file.read(“*a”)
local readjson = file:read(“*a”)
if readjson~=”” then
print(readjson)
– io.close()
file:close()
–反序列化
UserData.userList=json.decode(readjson)
print(UserData.userList[1].Name)
print(“———-“)
end
End
–在Game.OnInitOK中调用Game.ParseUserData()
–每次进入游戏时将UserData.txt中的数据读取到UserData.userList
function Game.OnInitOK()
–注册LuaView–
this.InitViewPanels()

CtrlManager.Init()
local ctrl = CtrlManager.GetCtrl(CtrlNames.Login);
if ctrl ~= nil and AppConst.ExampleMode == 1 then
ctrl:Awake()
end
Game.ParseUserData()
logWarn(‘LuaFramework InitOK—>>>’)
end

–运行方法后即可将数据保存到UserData.txt中
function LoginCtrl.RegistAndLoginOnClick( go )
local Name =”小明”
local Pwd = ”123456”
local userdata = UserData:New(Name,Pwd)
Game.SaveUserData(userdata)
end
这里写图片描述

以上就是我对ToLua框架Table表中添加类及数据持久化的理解

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值