概述
创建类
声明输出引脚
定义执行函数
蓝图使用示例
完整代码
概述
本文主要描述如何在UE4中使用C++自定义蓝图异步节点,以异步图片载入为例,希望能对你遇到的问题有所帮助与启发;
创建类
在UE4 Editor中创建C++类,继承于BlueprintAsyncActionBase;
声明输出引脚
UE4引擎中,异步输出节点使用动态多播委托实现(dynamic multicast delegates),其本质为我们在常见的蓝图中所使用的Dispather;
因此在使用异步输出节点之前,需要先对其进行定义;
本例中使用如下定义:
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnImageLoadComplete, UTexture2D*, Texture, FString, Key);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams用于解释声明变量的类型及名称,以上声明中定义了两个变量,分别用于存放贴图资源及贴图对应的ID;
UE4中用于声明动态多播委托的宏还有:
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam( DelegateName, Param1Type, Param1Name );
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams( DelegateName, Param1Type, Param1Name, Param2Type, Param2Name ) ;
DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams( DelegateName, Param1Type, Param1Name, Param2Type, Param2Name, Param3Type, Param3Name );
DECLARE_DYNAMIC_MULTICAST_DELEGATE_FourParams( DelegateName, Param1Type, Param1Name, Param2Type, Param2Name, Param3Type, Param3Name, Param4Type, Param4Name ) ;
.......
DECLARE_DYNAMIC_MULTICAST_DELEGATE_NineParams( DelegateName, Param1Type, Param1Name, Param2Type, Param2Name, Param3Type, Param3Name, Param4Type, Param4Name, Param5Type, Param5Name, Param6Type, Param6Name, Param7Type, Param7Name, Param8Type, Param8Name, Param9Type, Param9Name )
当前UE4 4.20版本中最多支持9个参数,读者可视自己的具体需求增加或减少参数数量;
定义好委托后,在上文中创建的类中声明需要的节点,如下:
UPROPERTY(BlueprintAssignable)
FOnImageLoadComplete ImageLoadComplete;
伪代码为:
UPROPERTY(BlueprintAssignable)
DelegateName NodeName;
DelegateName 为上文中声明的委托类型,NodeName为蓝图节点输出引脚,必须以UPROPERTY(BlueprintAssignable)定义;
注:如有多个异步输出需求,则声明多个输出