9- UE4代理(多播代理)

9. UE4代理(多播代理)

​ 多播代理相比于单播代理,可以绑定多个函数,执行时也是执行多个函数。

​ 但注意:多播代理不保证函数的执行顺序

1. 代理类型的声明

代理在被使用以创建变量之前应该被声明:

  • 返回值:多播代理不存在返回值

  • 参数:有几个参数,以及相应参数类型

  • 命名:代理的名字

// 多播代理
DECLARE_MULTICAST_DELEGATE(FTestMultiDelegateNoParam); //无参无返回值代理(命名最好规范:F+代理名+MultiDelegate+参数数量)
DECLARE_MULTICAST_DELEGATE_TwoParams(FTestMultiDelegateTwoParams, float, const FString&); //双参数

2. 代理的创建

​ 多播代理使用Addxxx的方法添加绑定。

​ 下面是绑定的函数说明,绑定方法与单播代理一致:

  • 绑定Lambda:AddLambda

  • 绑定原生C++类函数:AddRaw

  • 绑定共享指针:AddSP

  • 绑定线程安全共享指针:AddThreadSafeSP

  • 绑定静态函数:AddStatic

  • 绑定UFUNCTION:AddUFunction

  • 绑定UObject:AddUObject

3. 调用代理绑定的对象(Execute)

​ 使用Execute调用绑定的对象:

if(DelegateTwoParamsRetVal.IsBound())
{
DelegateTwoParamsRetVal.Execute(23, "Hello Delegate");
}

无参代理的新方法

DECLARE_DELEGATE.ExecuteIfBound();	//无参数执行