【问题标题】:access a variable from level blueprint in unreal engine 4在虚幻引擎 4 中从关卡蓝图中访问变量
【发布时间】:2018-06-04 14:28:46
【问题描述】:

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

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

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

【问题讨论】:

  • 我觉得你的变量更适合游戏模式或关卡蓝图以外的其他东西。它应该能够轻松转移到其中之一,因为其中只有函数和变量。然后你可以调用你的游戏模式并从那里访问变量等等。你需要做的就是复制、粘贴和重新创建变量。

标签: unreal-engine4 unreal-blueprint


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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


    这有点hacky,但有效:

    在立方体蓝图中移动变量。给立方体添加一个事件调度器,如果移动了,调用它并传入变量。

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

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

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

    然后,每次变量发生变化时,都会通知Level BP,执行自定义Event,这个自定义事件会调用所有actor的函数。

    Event Dispatchers explained


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

    【讨论】:

    • 如果您想再看一遍,我已经更改了问题,非常感谢您的帮助
    猜你喜欢
    • 2015-02-04
    • 1970-01-01
    • 2014-10-08
    • 2023-02-16
    • 1970-01-01
    • 2018-06-21
    • 2015-02-04
    • 2020-08-12
    • 2016-12-28
    相关资源
    最近更新 更多