从虚幻引擎4中的级别蓝图访问变量

时间:2018-06-04 14:28:46

标签: unreal-engine4 unreal-blueprint

我有一个变量,每次我在水平蓝图中移动我的立方体时都会更新,现在我想从多个类蓝图中访问这个变量,我该怎么做,我尝试投射到游戏状态但没有成功,我是如果你能详细解释一下,请到ue4真的很新

编辑:抱歉没有添加细节, 我想要访问的var是一个名为cube_side的整数,它告诉我每次移动时多维数据集在哪一边,所有这些都发生在bp级别,我想访问这个变量以查看多维数据集在其他方面的位置班级蓝图 - > here are some details in a picture

我知道在级别蓝图中对所有内容进行编码并不好,但是现在为时已晚,我只需要将var cube_side转移到其他类蓝图,以便其他对象可以根据多维数据集的哪一方进行更改。

2 个答案:

答案 0 :(得分:1)

为您的逻辑/功能创建一个Actor类。然后使用获取班级的所有演员(选择班级)->获取副本->获取变量

enter image description here enter image description here

答案 1 :(得分:0)

在UE4中与级别蓝图的通信相当棘手,因为它们不像GameMode,因此不应该直接访问(想象一下像“最终幻想”这样的老游戏,每次你走出一个边界时都会加载一个新关卡,所以依靠它可能会因为nullptrs而破坏你的演员或者让游戏崩溃)。

这有点hacky,但有效:

将变量移动到立方体蓝图中。将事件调度程序添加到多维数据集(如果已移动),调用它并将变量传递给。

在编辑器中选择多维数据集,打开级别蓝图,右键单击“添加对所选actor的引用”(该多维数据集必须是蓝图类的一部分,不仅是拖入的静态网格物体),并绑定Level BP内的事件调度员。

在需要访问变量的每个蓝图中创建一个函数,该函数根据变量执行任何操作。

Level Bp的自定义事件(绑定到多维数据集的Event Dispatcher)需要引用所有必须工作的actor,当变量更改并调用每个Actors函数时(你可以得到像你这样的引用)得到了立方体中的那个)

然后,每次变量更改时,都会通知Level BP,执行自定义事件并且此自定义事件会调用所有actor的函数。

Event Dispatchers explained

这是函数/代码的巨大浪费,因为您只需要这个级别,并且可能永远不会再使用它。通过不依赖BP级别来避免这种情况。