找回密码
 立即注册
查看: 324|回复: 0

Unreal事件分发机制

[复制链接]
发表于 2023-5-21 15:53 | 显示全部楼层 |阅读模式
什么是不雅察看者模式

不雅察看者模式定义了对象之间的一对多关系。 当一个对象改变状态并发出通知时,它的所有不雅察看者城市收到提示并作出本身的响应。
认识不雅察看者模式 · 游戏工程案例(击杀怪物后的逻辑)












什么是事件分发机制

通过不雅察看者模式的“订阅 – 发布”机制,使用事件传递数据与驱动行为的方式。
仔细来看,事件与信号其实并无多大分歧,从我们对其需求上来说,都只要能注册事件或信号响应函数,在事件或信号发生时能够被通知到即可。


传统开发:




使用事件分发机制:




打造本身的事件分发机制



核心就是静态打点类和一个接口类实现:


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-3-1 06:31 , Processed in 0.097207 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表