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

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为参数名),在制造委托的类中声明
在这里插入图片描述
一个委托变量&一个制造委托的函数(属于制造委托的类)
在这里插入图片描述
带参数的对象函数(属于制造委托的类)
在这里插入图片描述
带参数的静态函数(属于制造委托的类)

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

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

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

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值