UE4 Delegate(代理)相关源码分析(一)

本文分析了UE4中Delegate的源码,包括DECLARE_DELEGATE、DECLARE_MULTICAST_DELEGATE、DECLARE_EVENT和DECLARE_DYNAMIC_DELEGATE等。讨论了单播、多播的实现,重点探讨了DECLARE_EVENT的特性及其在不同版本中的行为。此外,还介绍了动态代理的使用,特别是其依赖于UE4的反射系统,并提到了动态多播在蓝图中的应用。
摘要由CSDN通过智能技术生成

UE4 Delegate(代理)相关源码分析


前言


  • 这是一篇关于UE4代理的一篇分析文章, 但可能涉及C++代理的实现, 请自行百度, 个人也不是很了解
  • 这篇文章会使对UE4代理相关的认识更深刻, 然并卵.

核心函数


一堆代理的定义
在这里插入图片描述

正文


先说下代理的类型, Engine\Source\Runtime\Core\Public\Delegates\DelegateCombinations.h(即代理宏定义的文件)看起来宏很多, 但实际上只有几种, 其他的是有更多的传入参数
DECLARE_DELEGATE( DelegateName ), 定义一个无参代理
DECLARE_MULTICAST_DELEGATE( DelegateName ) 定义一个无参多播
DECLARE_EVENT( OwningType, EventName ) 定义一个无参事件
DECLARE_DYNAMIC_DELEGATE( DelegateName ) 定义一个动态代理
DECLARE_DYNAMIC_MULTICAST_DELEGATE( DelegateName ) 定义一个动态多播代理
DECLARE_DELEGATE_RetVal( ReturnValueType, DelegateName ) 定义一个代理, 带返回参数
DECLARE_DYNAMIC_DELEGATE_RetVal 定义一个动态代理, 带返回参数

  • 凡是可以带返回参数的都不可以多播
  • 事件是一种特殊的多播, 虽然几乎用不到

基础内容参考官方文档, 懒得解释
https://docs.unrealengine.com/en-US/Programming/UnrealArchitecture/Delegates

DECLARE_EVENT( OwningType, EventName )

这个东西比较特殊吧, 反正暂时没有用到过,虽然看着定义用处不小的样子, 笑.

事件与 组播委托 十分相似。虽然任意类均可绑定事件,但只有声明事件的类可以调用事件 的 Broadcast、IsBound 和 Clear

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值