找回密码
 立即注册
查看: 334|回复: 0

TOLua实现数据持久化的方法

[复制链接]
发表于 2021-8-11 22:57 | 显示全部楼层 |阅读模式
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表中添加类及数据持久化的理解

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 06:27 , Processed in 0.111273 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表