UE4 C++ 事件

2021-2-17

官方文档

事件

事件与 组播委托 十分相似。虽然任意类均可绑定事件,但只有声明事件的类可以调用事件 的 Broadcast、IsBound 和 Clear 函数。这意味着事件对象可在公共接口中公开,而无需让外部类访问这些敏感度函数。事件使用情况有:在纯抽象类中包含回调、限制外部类调用 Broadcast、IsBound 和 Clear 函数。
只有声明事件的类可以调用事件
只有声明事件的类可以调用事件
只有声明事件的类可以调用事件

声明事件

事件的声明和 组播委托声明 方式几乎相同,唯一的区别是它们使用事件特有的宏变体。

声明宏 描述

DECLARE_EVENT( OwningType, EventName ) 创建一个事件。

DECLARE_EVENT_OneParam( OwningType, EventName, Param1Type ) 创建带一个参数的事件。

DECLARE_EVENT_TwoParams( OwningType, EventName, Param1Type, Param2Type ) 创建带两个参数的事件。

DECLARE_EVENT_Params( OwningType, EventName, Param1Type, Param2Type, …) 创建带 N 个参数的事件。

注:DECLARE_EVENT 宏的首个参数是"拥有"此事件的类,因此可调用 Broadcast() 函数。

绑定事件

事件绑定与 组播委托绑定 方式相同。

事件执行

事件允许附带多个函数委托,然后调用事件的 Broadcast() 函数将它们一次性全部执行。事件签名不允许使用返回值。对于事件而言,只有定义事件的类才能调用 Broadcast() 函数。

即使不存在绑定,在事件上调用 Broadcast() 也是安全操作。唯一需要注意的情况是使用事件初始化输出变量,通常不建议执行此操作。

调用 Broadcast() 函数时,被绑定函数的执行顺序尚未定义。有可能不按照函数的添加顺序执行。

Broadcast() 将此事件广播到所有绑定对象,已失效的对象除外。

例:
测试函数(属于待绑定的对象)的实现仅打印函数名
在这里插入图片描述
声明,一般在类的定义里面,在制造委托的类中声明
在这里插入图片描述
在这里插入图片描述
绑定及调用,此处写在同一个函数内
在这里插入图片描述
在这里插入图片描述
其他类调用事件
在这里插入图片描述

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值