UE4蓝图基础04-变量和数组

1.变量

所谓变量,就是保存了各种值的“器皿”,它可以存放一个值或引用世界中的一个Object或Actor的属性。在编程中,会根据需要将各种计算的结果或部件的设定值等,拿来进行处理操作。为此,需要事先将必要的值保存在某个地方,这就是变量的作用。

变量也有类型之分,创建变量的时候就指定了该变量所保存的值的类型。

01.创建变量

变量是由位于蓝图编辑器左侧的“我的蓝图”管理的。这里有“变量”项目。其右端显示着“+”号,是用于添加变量的。单击“+”号后,在“我的蓝图”中“变量”的下方添加了名为“NewVar_0”的项目。这就是新生成的变量。NewVar_0是默认的变量名称,可以重新设置变量的名称。

右侧的细节面板中,显示了新建变量的详细内容设置。

02.变量的细节面板

在变量的细节面板中,各个设置的含义。

变量名称:在“我的蓝图”中使用的就是变量名称,如果这里修改为新的名称,在蓝图中的名称也会发生变化。

变量类型:决定了所保管的值的类型。这是个下拉菜单,可以在这里选择变量的类型。

可编辑:规定了是否可以编辑该变量。不是单纯地修改值,而是表示“是否可以公开编辑该变量”,它是为了在公开的蓝图实例上能够处理变量。

工具提示:设置当鼠标指针悬停到该变量上时,显示该变量的工具提示信息。

在生成时显示:设置生成此蓝图时,是否让此变量显示为引脚。

私有:限制所有外部访问的属性。

显示到Matinee:控制这个变量是否要暴露给Matinee以进行修改。

分类:指定变量的类别。可以整理很多变量。

复制:规定是否应该通过网络复制这个变量。

默认值:位于最下方的是该变量默认的初始值。可事先在这里设置刚开始使用变量时的数值。这部分的显示,会根据变量的类型而变化。

03.使用变量&设置变量

现在细节面板中给变量设置一个默认值this is a message。并编译。

 在蓝图中使用变量。

如果要使用变量的值,将变量拖拽到事件图表中,选择“获取”。

如果要给这个变量设置值,选择“设置”。

我们获取变量并先打印变量的默认值。然后再设置该变量的值为new value。然后再将设置后的值打印输出。

2.数组

如果需要保管大量相同类型的数据时,需要用到数组。数组是能统一保存若干数值的特殊类型。数组中有很多保管库用来存储值,每个保管库分别有不同的编号。就像“3号保管这个”,“取出7号的值”等,可以指定编号、运用其中的值,所以能够有序的管理大量数据。

01.创建数组

我们将之前创建的变量msg,修改为字符串类型的数组。只需要在变量类型右侧切换成9宫格图案的图标即可。

 新建的数组中没有保管任何值,这并不是没有值,而是连保管值的“仓库”都没有。使用数组需要事先确保有保管值的场所,即初始化数组的长度。当然,也可以通过程序后续增减数组元素,长度也会随之变化。

初始化数组长度,点击细节面板中默认值右侧的“+”号。这里我们添加四个元素,并设置默认值。数组的下标是从0开始的。

 02.给数组设置值

通过Set Array Elem(设置阵列元素)节点实现。右击事件图表找到该节点添加到事件图表这中。该节点有四个输入引脚,含义如下:

Target Array 用于连接设置值的数组
Index 用于规定设置项目的编号,这里可以指定编号的值。即数组下标
Item 用于连接设置的值。将于Item连接的值保存在Index指定的编号中
Size to Fit 如果有项目未使用,就删除掉,负责整理保留使用的项目

                              

我们可以吧数组中的“香蕉”修改成“梨”,“香蕉”在数组中的下标位置为2。

首先,将数组变量拖拽到事件图表选择“获取”。然后新建一个字符串内容是“梨”,设置Index为2。将数组变量与Target Array相连接。字符串“梨”与Item连接。

03.获取数组中的元素

通过数组下面的Get节点。将刚才设置的“梨”从数组中取出来,并打印。

04.数组末尾追加一个元素

数组是有序,那么我们新增加一个数组元素,就会默认追加到末尾。通过数组下面的ADD节点可以为数组添加一个新的元素。

下面我们为数组在追加一个“哈密瓜”。

05.移除一个数组元素

通过数组下的Remove Index节点可以移除数组中指定Index位置的值。那我们把“樱桃”移除。“樱桃”的Index为3。

那么经过对数组的这一番操作,数组现在是什么样子,你是否心中有数了呢?

应该是这个样子:

是否和你的预期一样呢。

其实我们可以通过forEachLoop节点打印出数组中的每个元素。不过,这个涉及到蓝图中的流程控制节点,我们以后再学习。

猜你喜欢

转载自blog.csdn.net/weixin_44001613/article/details/123615066