代码之家  ›  专栏  ›  技术社区  ›  Maximetinu

通过引用分配的虚幻引擎4蓝图

  •  0
  • Maximetinu  · 技术社区  · 7 年前

    我有一个EnemySpawner Blueprint类,它可以: enter image description here

    EnemySpawner有一个名为“路径”的样条线组件,生成的敌人必须遵循该组件。对于它,敌人的蓝图有另一个名为“敌人路径”的样条线组件,必须在创建时由敌人的产卵者初始化,如上面的屏幕截图所示。

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

    Blueprint运行时错误:尝试读取属性时未访问任何 来自函数的PathActor:来自节点的“ExecuteUbergraph\u敌人”: 图中的DestroyActor:对象:敌人中的EventGraph,带描述: 试图读取属性PathActor时访问了None

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

    例如,如果我在敌人的蓝图中(出于测试目的): enter image description here 样条线组件的参与者所有者未被销毁。

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

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

    我尝试过的最后一件事是,通过从衍生的敌人那里获得样条线,直接在Eneyspowner蓝图中的“Set”节点之后摧毁样条线的所有者,令我惊讶的是,它被摧毁了!

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

    2 回复  |  直到 7 年前
        1
  •  1
  •   spacebarisdefect    7 年前

    您可以在BP actor中设置任何带有“生成时公开”标志的变量(当在BP编辑器中选择变量时,在“详细信息”面板中),该标志将在使用SpawnActorFromClass节点时为要传递到其中的值添加pin。确保还将变量设置为“可编辑”。

        2
  •  0
  •   MostHost LA    6 年前

    我想也许我们做错了。

    在straight up C++中,您可以创建一个类,创建变量,通过创建函数修改变量&路过参考号。

    我认为,如果Blueprint是一个类(事实上是这样),如果变量是一个变量(事实上是这样),那么如果不调用执行该操作的函数,就不能期望为其赋值。。。再说一遍,据我所知,也许引擎确实能帮你。。。