全面理解UE4委托编程
UE4中的 delegate ( 委托 )常用于解耦不同对象之间的关联:委托的拥有者不与监听者有直接关联,监听者通过将响应函数绑定到拥有者的委托上,使得委托触发时能及时收到通知来做相关的逻辑处理 委托本质是一个特殊类的对象,它可以储存(一个或多个)函数指针、调用参数和返回值 UE4在 DelegateCombinations.h 提供了一些宏来方便开发者快速来自定义一个delegate类型,目前引擎(4.23)最多支持4个负载数据和9个参数 大致地使用流程如下: ① 使用DECLARE_*宏声明一个自定义delegate类型FDelegateXXX ② 声明一个FDelegateXXX类型的代理对象 ③ 绑定需要执行的函数指针到代理对象上( 注: 绑定函数与代理对象的参数、返回值必须完全一致) ④ 触发代理对象中的函数指针按顺序立即执行 ⑤ 不需要某个函数指针时,可将其从代理对象中解绑 UE4提供了五类Delegate: 名称 宏 是否支持反射 能否有返回值 触发代理 绑定个数 支持的绑定实例类型 单播代理 DECLARE_DELEGATE_* DECLARE_DELEGATE_RetVal_* 否 可以有 ① 无返回值情况 bool ExecuteIfBound(...) void Execute(...) ② 有返回值情况 RetValue Execute(...) 注