0

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

编辑:抱歉没有添加细节,我要访问的变量是一个名为 cube_side 的整数,它告诉我每次移动时立方体在哪一侧,所有这些都发生在 bp 级别,我想访问这个变量来查看立方体在其他类蓝图中的哪一侧 -> 这是图片中的一些细节

我知道在关卡蓝图中编写所有内容并不好,但现在为时已晚,我只需要将 var cube_side 转移到其他类蓝图中,以便其他对象可以根据立方体所在的一侧进行更改。

4

2 回答 2

2

为您的逻辑/功能创建一个 Actor 类。然后使用 Get all actor of class (选择你的类) -> 获取副本 -> 获取变量

在此处输入图像描述 在此处输入图像描述

于 2018-08-24T23:37:40.633 回答
0

在 UE4 中与关卡蓝图的通信相当棘手,因为它们不像 GameMode 那样持久,因此不应该直接访问(想象一下像《最终幻想》这样的旧游戏,每次你跨出边界时都会加载一个新关卡,因此依赖它可能会破坏您的演员或由于 nullptrs 导致游戏崩溃)。


这有点hacky,但有效:

在立方体蓝图中移动变量。向多维数据集添加一个事件调度程序,如果它被移动,调用它并传入变量。

在编辑器中选择立方体,打开关卡蓝图,右键单击,“添加对选定actor的引用”(立方体必须是蓝图类的一部分,而不只是拖入的静态网格),并在里面绑定事件调度器水平BP。

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

Level Bp 的自定义事件(绑定到多维数据集的 Event Dispatcher),当变量更改并调用每个 Actors 函数时,需要对所有必须工作的 Actor 的引用(您可以像获得引用一样获取引用从立方体)

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

事件调度程序解释


这是对函数/代码的巨大浪费,因为您只需要在这一层使用它,并且可能永远不会再使用它。以后避免这种情况,不要过分依赖水平 BP。

于 2018-06-04T15:16:07.483 回答