将数组的每个值乘以 Unreal Engine 蓝图中的单个值

Multiply each value of an Array by a single value in Unreal Engine blueprint

我找不到如何简单地将数组的值乘以单个乘数(例如,将数组的每个值加倍)。我发现的唯一方法是通过索引获取每个值,将它们分别相乘然后重建一个数组,如下所示:

这个太大了,占用了很多space而且有点难看。我找不到任何函数来乘以数组,它是隐藏在另一个 class 中,例如 Vector,还是有不同的名称?我不敢相信这是最好的方法。

正如 George 在评论中提到的那样,您可以将此代码移动到一个函数(或宏)中以整理您的主图并允许轻松地重用和维护代码部分。您的示例需要确切知道数组中有多少个元素,因为您必须单独获取每个元素并将它们一次相乘。但是,有时您的数组是在运行时生成的,而您并不知道它将包含多少元素。更不用说时间和 space 对大型数组执行此操作所需的时间。

正如 George 还提到的,您可以使用循环来获得相同的结果。这不仅会简化您的图形,而且还允许您在事先不知道数组大小的情况下修改数组。我想 post 给您(和其他人)一个使用循环和函数实现此目的的示例的答案。

下面的函数接受名为 'Array Input' 的 float 数组和名为 'Multiplier' 的单个 float 作为输入。然后它使用 For Each 循环遍历数组中的每个 float 并将其值乘以提供的 'Multiplier'。使用Set Array Elem(Elem是Element的缩写)对原数组进行修改,其中Target Array为待修改的数组,Index为待修改元素的数组索引,Item 是要设置的新值。 return 在这种情况下并不是必需的,但如果您想在循环结束后做任何事情,您可以将它连接到 Completed 引脚。

要测试它是否有效,您可以在使用该函数之前和之后循环遍历数组的值,如下所示。

或者,您可以保持原始数组不变,并将您的函数 return 设置为一个新数组,如下所示。您可以只使用 Add 函数将每个项目添加到新数组中,但在本例中,我将数组的大小调整为 'Array Input' 的长度,然后像以前一样使用 Set Array Elem .这样做的原因是因为它会提高性能,尤其是对于较大的阵列。 Add 函数必须在每次添加元素时调整数组大小,但下面的方法只调整数组大小一次。

OutputArray 变量是一个局部变量,如您在左侧所见。这意味着该变量仅在当前函数内部可用,无法在蓝图的主图中访问。相反,您可以看到 return 节点现在用于 return 循环完成后的新数组。这可以从您的主要事件图中按如下方式使用。

大家也可以看到,这次我是用变量来指定倍数,而第一次是在函数节点中选择了手动输入。