Unity 事件系统 EventSystem EventManager 别人的各种事件系统的比较分析

36 篇文章 1 订阅

https://blog.csdn.net/yye4520/article/details/80465251
这个里面的Dispatcher 就相当于是事件系统,里面维护一个字典Dictionary<int, EventListenerDelegate> events。注意EventListenerDelegate(Message evt)。Message类也是存储着消息的相关内容,自行拓展。这个事件系统就是两个方法,一个注册委托,一个就是发送事件。字典里面根据事件的Id来存储着委托,当我们发送的事件的id可以在字典里面找到时,就调用字典里面该id的委托,参数就是我们发送进去的事件。这个事件系统不同下面的事件系统,没有在Update里面循环遍历。

https://blog.csdn.net/zgjllf1011/article/details/79227098
EventManager维护了一个字典Dictionary<EventID,List<IEventObserver>> observerList 这个里面每一个事件Id对应着多个观测者,这个观测者都实现了IEventObserver接口里面的调用方法。  EventManager还维护了一个队列Queue eventQueue = new Queue()这里面就存着我们向事件系统发送的事件。我们向EventManager里面注册对于不同id事件的观察者,然后在我们向事件系统里面发送事件的时候,不同事件观察者就会调用接口实现的方法(实在Update里面每帧遍历Queue)。void HandleEvent(EventData resp) 。这个接口方法的参数是EventData,里面可以拓展出我们需要的EventData子类,以满足不同的需要。


https://blog.csdn.net/qq_22911163/article/details/79129149
EventManager维护两个字典,一个字典是包含处理事件的委托Dictionary<string, List<Action<Object>>> _handleDictionary,一个字典包含发送进事件管理器的发起事件(其实是存着处理事件的委托的参数)Dictionary<string, System.Object> _dicIssue。
然后在Update里面每一帧都遍历一下_dicIssue,讲其中的相关事件给处理掉。就是调用Action委托,其参数就是_dicIssue里的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值