UE4 C++ 多播委托(代理)

本文介绍了Unreal Engine中多播委托的概念,包括它们如何声明、绑定和执行。多播委托允许同时调用多个函数,常用于事件处理。通过调用Broadcast()方法触发,注意其不支持返回值且执行顺序未定义。此外,还提到了事件作为多播委托的特殊形式,以及动态多播委托的使用。

2021-2-15
官方文档

多播委托

多播委托拥有大部分与单播委托相同的功能。它们只拥有对对象的弱引用,可以与结构体一起使用,可以四处轻松复制等等。
就像常规委托一样,多播委托可以远程加载/保存和触发;但多播委托函数不能使用返回值。它们最适合用来 四处轻松传递一组委托。

事件 是一种特殊类型的多播委托,它在访问"Broadcast()"、"IsBound()"和"Clear()"函数时会受到限制。

声明多播委托

多播委托在声明方式上与声明标准委托 相同,只是前者使用特定于多播委托的宏变体。

DECLARE_MULTICAST_DELEGATE[_RetVal, …]( DelegateName ) 创建一个多播委托。

DECLARE_DYNAMIC_MULTICAST_DELEGATE[_RetVal, …]( DelegateName ) 创建一个动态多播委托。

绑定多播委托

多播委托可以绑定多个函数,当委托触发时,将调用所有这些函数。因此,绑定函数在语义上与数组更加类似。
在这里插入图片描述

多播执行

多播委托允许您附加多个函数委托,然后通过调用多播委托的"Broadcast()"函数一次性同时执行它们。多播委托签名不得使用返回值

在多播委托上调用"Broadcast()"总是安全的,即使是在没有任何绑定时也是如此。唯一需要注意的是,如果您使用委托来初始化输出变量,通常会带来非常不利的后果。

调用"Broadcast()"时绑定函数的执行顺序尚未定义。执行顺序可能与函数的添加顺序不相同。

“Broadcast()” 将该委托广播给所有绑定的对象,但可能已过期的对象除外。

例:
测试函数(属于待绑定的对象)的实现仅打印函数名
在这里插入图片描述

声明(FTest(Dynamic)MultiDelegate是委托参数,Value为参数名),在制造委托的类中声明
在这里插入图片描述
一个委托变量&一个制造委托的函数(属于制造委托的类)
在这里插入图片描述
带参数的对象函数(属于制造委托的类)
在这里插入图片描述
带参数的静态函数(属于制造委托的类)

在这里插入图片描述
常规的多播绑定 (属于制造委托的类)

在这里插入图片描述
在这里插入图片描述
关于匿名函数

动态的多播绑定 (属于制造委托的类)
在这里插入图片描述

调用,属于需要调用委托的对象
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值