我是靠谱客的博主 疯狂小虾米,最近开发中收集的这篇文章主要介绍简易的Lua客户端事件框架本文旨在提供一个Lua客户端事件框架简单思路,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文旨在提供一个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客户端事件框架简单思路所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(28)

评论列表共有 0 条评论

立即
投稿
返回
顶部