Unreal事件分发机制
什么是不雅察看者模式不雅察看者模式定义了对象之间的一对多关系。 当一个对象改变状态并发出通知时,它的所有不雅察看者城市收到提示并作出本身的响应。
认识不雅察看者模式 · 游戏工程案例(击杀怪物后的逻辑)
什么是事件分发机制
通过不雅察看者模式的“订阅 – 发布”机制,使用事件传递数据与驱动行为的方式。
仔细来看,事件与信号其实并无多大分歧,从我们对其需求上来说,都只要能注册事件或信号响应函数,在事件或信号发生时能够被通知到即可。
传统开发:
使用事件分发机制:
打造本身的事件分发机制
核心就是静态打点类和一个接口类实现:
EventManager.h
UECpp_Sender 是事件发送者,用按时器每隔3秒调用一次UEventManager::DispatchEvent(”MyBpAndCpp_DispatchEvent”, Data);Data是一个uobject类型内部有个int的随机数
UECpp_Receiver_Parent 是事件订阅者的基类,有了显示的功能
UECpp_Receiver_B : 事件订阅者派生类,把事件发送的数据(这里是int随机数)以蓝色打印在屏幕
UECpp_Receiver_G :事件订阅者派生类,以蓝色打印在屏幕
UECpp_Receiver_R :事件订阅者派生类,以红色色打印在屏幕
--UECpp_Receiver_G 会在法式执行10后,打消对”MyBpAndCpp_DispatchEvent”的订阅
事件分发三步走:
sender 广播(发布,Broadcast) ”MyBpAndCpp_DispatchEvent”事件
Receiver 订阅(不雅察看) ”MyBpAndCpp_DispatchEvent”事件
注册事件函数在”MyBpAndCpp_DispatchEvent”事件中的被调用
20210513
页:
[1]