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为参数名),在制造委托的类中声明

一个委托变量&一个制造委托的函数(属于制造委托的类)

带参数的对象函数(属于制造委托的类)

带参数的静态函数(属于制造委托的类)

常规的多播绑定 (属于制造委托的类)


(关于匿名函数)
动态的多播绑定 (属于制造委托的类)

调用,属于需要调用委托的对象



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

被折叠的 条评论
为什么被折叠?



