UE4_C++ 创建异步蓝图节点_Creating Asynchronous Blueprint Nodes

本文详细介绍了如何在UE4中使用C++创建自定义的异步蓝图节点,通过C++类继承BlueprintAsyncActionBase,并声明动态多播委托来实现异步图片加载的功能。内容涵盖创建类、声明输出引脚、定义执行函数以及蓝图中的使用示例。
摘要由CSDN通过智能技术生成

概述

创建类

声明输出引脚

定义执行函数

蓝图使用示例

完整代码


概述

本文主要描述如何在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)定义;

注:如有多个异步输出需求,则声明多个输出

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值