ue4 怎么传递变量到另一个蓝图_第3期 ue4 泛型蓝图节点的实现及应用实例

  • Post author:
  • Post category:其他


be47f9d90d2254efa768e4e2e83e444a.png


1. Overview

本教程旨在讲解使用ue4 UFUNCTION说明符(Specifier)自定义泛型蓝图节点,实现UObject的任意类型属性(UProperty)GET/SET方法。如下四个泛型蓝图节点,依据UObject对象的PropertyName,GET/SET属性值,适用于v4.25之前版本。

56352cc855c84d0f9187b0a5e8c3e90f.png
泛型蓝图节点


2. Introduction

泛型蓝图节点也就是带有可变参数的蓝图节点,通用指蓝图系统中带有通配符(wildcard)类型参数的蓝图节点。实现泛型蓝图节点至少有二种方式,其一,继承UK2Node类,并根据需要实现其派生类,如常用的Cast节点,Set By-Ref Var节点等都属于此类;其二,使用UFUNCTION中CustomThunk说明符以及相应的类型说明符标识wildcard参数,并为该蓝图函数自定义DECLARE_FUNCTION()函数体,如Utilities|Array,Utilities|Map,Utilities|Set 目录下,三种容器Array、Map、Set各类操作的蓝图节点都属于此类。此外ue4内置的蓝图节点还存在着将二者结合的蓝图节点GetDataTableRow,UK2Node_GetDataTableRow类(基类UK2Node)在Editor状态下动态更新Pin,UDataTableFunctionLibrary类中GetDataTableRowFromName函数在Runtime状态下,执行具体的GetDataTableRowFromName方法,将DataTable中的RowStruct拷贝到OutRowStruct。以上二种方式各有其优缺点,本次讲解采用代码量少、实现难度低的第二种方式。


3. Required Knowledge

1. 熟悉ue4 c++ UFUNCTION宏常用关键字,

2. 自定义execFunction函数体;(预计下一讲)


4. Why


第一个问题:为什么要实现这样一类节点?

目的:(1)提升自身的编程水平,加深个人对于泛型蓝图节点的理解;(2)减少蓝图之间的引用,提升蓝图执行性能。

如下图所示,从BP_Acto