概述
本文旨在提供一个Lua客户端事件框架简单思路
下面以背包刷新事件为例,展示下Lua客户端的事件注册监听完整流程
首先创建事件管理类:
ClientEventManager = {}
local this = ClientEventManager
this.eventIds = {}
this.eventMap = {}
---派发客户端事件
function ClientEventManager.Dispatch(enumId,message)
if not table.contains(this.eventIds,enumId) then
print("事件未注册!")
return
end
local curEvent = this.eventMap[enumId]
if curEvent then
local callRet,err = xpcall(curEvent.callback,debug.traceback,curEvent.ui,message)
if not callRet then
logErrorWithoutTraceBack(err)
end
end
end
---注册客户端事件
---@param enumId 事件枚举
---@param callback 回调函数
---@param ui 注册事件的UI界面
---@param param 事件参数
function ClientEventManager.RegistEvent(enumId,callback,ui)
this.eventMap[enumId] = {callback = callback,ui = ui}
if not table.contains(this.eventIds,enumId) then
table.insert(this.eventIds,enumId)
end
end
事件枚举类:
EventEnum = {
BagChange = enum(0)
}
然后是背包界面类:
BagUI = {}
local this = BagUI
---注册并监听客户端背包变化事件
function BagUI:RegistEvent()
ClientEventManager.RegistEvent(EventEnum.BagChange,this.OnBagChange,this)
end
function BagUI:OnBagChange(_,message)
print("背包变动后需要执行的逻辑")
end
最后是服务器背包消息响应类:
BagController = {}
---服务器给到客户端的背包变动响应
function BagController:ResBagChange(_,message)
--派发背包变动客户端事件
ClientEventManager.Dispatch(EventEnum.BagChange,message)
end
整个过程总结起来就是:
1,首先在背包界面注册背包变动事件并绑定回调函数;
2,然后在服务器响应类中增加派发客户端的背包变动事件代码;
3,如此一来在收到服务器背包变动响应时,便会触发客户端背包变动事件并执行回调函数;
以上。
最后
以上就是疯狂小虾米为你收集整理的简易的Lua客户端事件框架本文旨在提供一个Lua客户端事件框架简单思路的全部内容,希望文章能够帮你解决简易的Lua客户端事件框架本文旨在提供一个Lua客户端事件框架简单思路所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复