项目记录23--unity-tolua框架MediatorManager

本文介绍了一个用于管理不同模块的MediatorManager单例类。该类负责创建、存储和移除mediator实例,并提供了发送消息的功能。MediatorManager通过类型标识符管理mediator的生命周期,并支持特定类型的mediator如登录mediator。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我还存在!。!!!

这个类是管理全部模块,没什么好说就是个单例,之后还须要UIManager,SceneManager,DataManager。。。

。慢慢来。不是还要上班做死的嘛,坑爹。




MediatorManager = class("MediatorManager")


--构造方法
function MediatorManager:ctor(  )
self._mediators = {}
end


--单例
function MediatorManager:Instance()
if self.instance == nil then
self.instance = self.new()
end
return self.instance
end


--添加一个mediator通过Type dataq : int 或者 GameEvent
function MediatorManager:AddMediator(mediatorType,data)
local tempMediator = self._mediators[mediatorType]
--创建mediator
if tempMediator == nil then
if mediatorType == MediatorType.LoginMeditor then
tempMediator = require("Mediator.LoginMediator.LoginMediator").new()
else
print("no this MediatorType : "..mediatorType)
--不存在type直接返回
return
end
--将medator存起来
if tempMediator ~= nil then
self._mediators[mediatorType] = tempMediator
end
end
--发送消息
if tempMediator ~= nil and data ~= nil then
self:SendEvent(data)
end
end


--发送消息
function  MediatorManager:SendEvent(data)
print("SendData type : " .. type(data))
--是否发送消息: int GameEvent
if type(data) == "number" then
local e = GameEvent.New(data)
Notifier.Instance:SendEvent(e)
elseif type(data) == "userdata" then
Notifier.Instance:SendEvent(data)
end
end


--移除:注意不能再AddMediator命令里面做RemoverMediator
function MediatorManager:RemoveMediator(moduleType)
local tempMediator = self._mediators[moduleType]
if tempMediator ~= nil then
tempMediator:Exit()  --先调用mediator
self._mediators[moduleType] = nil   --设置为空
end
end


转载于:https://www.cnblogs.com/jzssuanfa/p/7149884.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值