goto 发表于 2023-5-21 15:53

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]
查看完整版本: Unreal事件分发机制