美文网首页
Unreal 委托Delegate

Unreal 委托Delegate

作者: Mr_约科 | 来源:发表于2019-12-26 22:43 被阅读0次

    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) 有两方面的指标,①哪个对象 ②哪个委托 。 总的来讲,也就是移除 此对象在这个委托上的所有 函数指针。

    相关文章

      网友评论

          本文标题:Unreal 委托Delegate

          本文链接:https://www.haomeiwen.com/subject/fjaloctx.html