首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在虚幻引擎蓝图中将数组的每个值乘以单个值

在虚幻引擎蓝图中将数组的每个值乘以单个值
EN

Stack Overflow用户
提问于 2021-08-13 05:04:12
回答 1查看 979关注 0票数 0

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-22 15:00:21

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

正如George还提到的,您可以使用循环来实现相同的结果。这不仅可以简化图形,还允许您在不预先知道数组大小的情况下修改数组。我想发布一个答案,给你(和其他人)一个使用循环和函数来实现这一点的例子。

下面的函数将名为“array Input”的float数组和名为“float”的单个乘数作为输入。然后,它使用For Each循环遍历数组中的每个float,并将其值乘以所提供的“乘数”。使用Set Array Elem (Elem是element的缩写)修改原始数组,其中Target Array是要修改的数组,Index是要修改的元素的数组索引,Item是要设置的新值。在这种情况下,返回实际上并不是必需的,但是如果您想在循环结束后执行任何操作,则可以将其连接到Completed引脚。

要测试它是否正常工作,您可以在使用函数之前和之后循环数组的值,如下所示。

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

正如您在左侧看到的,OutputArray变量是一个局部变量。这意味着该变量仅在当前函数内可用,并且不能在蓝图的主图形上访问。相反,您可以看到,在循环完成后,return节点现在用于返回新的数组。这可以在你的主事件图中使用,如下所示。

您还可以看到,这一次我使用了一个变量来指定乘数值,而第一次我选择在函数节点中手动输入它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68767025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档