Unreal 委托Delegate
2019-12-26 本文已影响0人
Mr_约科
1. 核心关键词
Declare DECLARE 声明
Delegate DELEGATE 委托
Multicast MULTICAST 多播
Dynamic DYNAMIC 动态
OneParams 参数数量
RetVal 返回值
C# Delegate 委托 与 C/C++的函数指针
2. 委托的使用理念
见下参考文章的"委托的使用理念"。降低耦合度。
参考文章
https://docs.unrealengine.com/zh-CN/Programming/UnrealArchitecture/Delegates/index.html
https://blog.csdn.net/qq_29523119/article/details/84893503
https://blog.csdn.net/zzk1995/article/details/48224465
https://blog.csdn.net/y1196645376/article/details/51408114
3. Unreal 委托实战
所有的注册都仅 注册一次,除非 Remove掉,否则一直在。因为,每注册一次都生成一个对象,多次注册,多个对象。
(1)委托中嵌套委托
(2)仅在引擎第一次启动调用
这次引擎的启动 在某些 设置上依赖上一次引擎启动,是通过 .ini配置文件 将彼此之间进行的联系。 .ini文件可为 引擎配置文件 也可为 项目配置文件。引擎配置插件大家都统一,项目配置文件因项目的不同而存在差异。
① 对当前关卡名字进行判断,是否为 “Untitled_1”,名字来自于项目设置下的编辑器开始地图。
(3)引擎第一帧
(4)新建关卡的hook
FEditorDelegates::MapChange
此委托在 Map_Load的时候被广播,即广播的时间节点有两个:
(1)引擎启动加载地图的时;
(2)新建关卡的时;
所以将此事件hook到,第一帧委托下,就保证了 第二个时间节点生效。
(3)在内容浏览器里打开 已存在的关卡,也会被广播。
(5)注册函数 的 Add 与 Remove
- 委托函数指针的Add 是一种基于 栈结构 数据,遵循 先进后出原则,先注册后调用。
- Remove(this) 有两方面的指标,①哪个对象 ②哪个委托 。 总的来讲,也就是移除 此对象在这个委托上的所有 函数指针。