0

我有一个 EnemySpawner 蓝图类,它可以: 在此处输入图像描述

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

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

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

所以,换句话说,空指针异常。

例如,如果我在 Enemy's Blueprint 中这样做(出于测试目的): 在此处输入图像描述 Spline 组件的 Actor Owner 没有被销毁。

即使我尝试分配所有所有者演员,不仅是样条线组件,它也不起作用。

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

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

那么,关于这样做的正确方法是什么?

4

2 回答 2

1

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

于 2018-01-15T09:06:23.800 回答
0

我想也许我们做错了。

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

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

于 2019-02-18T01:18:45.390 回答