【问题标题】:Unreal Engine 4 Blueprints assign by reference虚幻引擎 4 蓝图通过引用分配
【发布时间】:2018-06-21 12:46:24
【问题描述】:

我有一个 EnemySpawner 蓝图类,它可以:

EnemySpawner 有一个名为“Path”的 Spline 组件,生成的 Enemy 必须遵循该组件。为此,Enemy 的蓝图有另一个名为“Enemy Path”的 Spline 组件,必须在创建时由 Enemy Spawner 初始化,如上面的屏幕截图所示。

但是,在我的 Enemy 中,如果我尝试访问“EnemyPath”,我会收到以下错误:

蓝图运行时错误:访问无尝试读取属性 来自函数的 PathActor:来自节点的“ExecuteUbergraph_Enemy”: 图中的 DestroyActor:对象中的 EventGraph:带有描述的敌人: 访问 None 试图读取属性 PathActor

也就是说,空指针异常。

例如,如果我在敌人的蓝图中做了(出于测试目的): 样条线组件的 Actor Owner 没有被销毁。

即使我尝试分配所有 Owner actor,而不仅仅是 Spline 组件,它也不起作用。

我还尝试在 EnemySpawner 的“SpawnActor Enemy”节点和 Enemy 的“Event BeginPlay”节点之后在屏幕上打印一些内容,并且我检查了显然 EnemySpawner 中的打印首先发生,所以唯一的问题是变量并没有真正分配。

我尝试的最后一件事是在“Set”节点之后直接在 EnemySpawner 蓝图中通过从 Spawned 敌人那里获取 Spline 的 Owner 来摧毁它,令我惊讶的是,它被摧毁了!

那么,你想知道什么是正确的做法吗?

【问题讨论】:

    标签: reference game-engine unreal-engine4 unreal-blueprint


    【解决方案1】:

    您可以使用“Expose on Spawn”标志(在详细信息面板中,当在 BP 编辑器中选择变量时)设置 BP actor 中的任何变量,这将在使用SpawnActorFromClass 节点。确保您也将变量设置为“可编辑”。

    【讨论】:

      【解决方案2】:

      我想也许我们做错了。

      在直接的 C++ 中,您可以创建一个类、创建变量、通过创建函数并通过 ref 传递来修改变量。

      我认为如果蓝图是一个类(它是),并且如果变量是一个变量(它是),你真的不能期望在不调用执行它的函数的情况下为其赋值...再说一次,据我所知,也许引擎确实会为你做这件事...

      【讨论】:

        猜你喜欢
        • 2015-02-04
        • 2015-02-04
        • 1970-01-01
        • 2020-07-24
        • 1970-01-01
        • 2020-08-12
        • 2014-10-08
        • 2015-10-12
        • 2019-09-10
        相关资源
        最近更新 更多