版权声明:本文为CSDN博主「东门吹白雪」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
一、动态委托的定义:
动态委托(普通委托)
DECLARE_DYNAMIC_DELEGATE(FWDE_Dy_Sl_Zero);
带一个参数的动态多播
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FWDE_Dy_Sl_One, FString, InfoStr); ///< 参数类型 FString,参数名 InfoStr
二、绑定委托
使用的时候 只有 多播委托 (MULTICAST) 可以作为变量给 蓝图 绑定调用(蓝图中绑定 自定义事件 到该委托上,本例中 自定义事件 带一个参数),普通委托 不可以 使用 BlueprintAssignable
UPROPERTY(BlueprintAssignable, Category = "FrameWork")
FWDE_Dy_Sl_One FDSZFun; ///< 多播委托实例
普通委托 可以作为函数参数使用:
// 委托变量作为参数
UFUNCTION(BlueprintCallable, Category = "FrameWork")
void RegFunDel(FWDE_Dy_Sl_Zero TargetFun);
自定义事件绑定到(具体)实际调用的函数 Reg Fun Del
三、调用委托
在需要的地方使用 Boradcast() 来调用委托(中实际的函数)
Void AFWDEActor::BeginPlay()
{
Super::BuginPlay();
// Broadcast() 是 ExecuteIfBound() 的多播版本,不管是否添加了绑定, Broadcast() 都可以被调用
FDSZFun.Broadcast();
}