通过蓝图生成和销毁Actor

了解如何用蓝图在按下按钮时生成对象,并在再次按下按钮时销毁对象。

Windows
MacOS
Linux
On this page

无论要制作哪种类型的游戏,通常都会有一些情况,您希望在运行时出现一些最初没有放入关卡的事物。 在场景中 生成 对象的概念可以使用蓝图可视化脚本 实现,销毁 或撤销对象也是如此(无论其是否是在游戏期间生成的)。

在本指南中,我们将使用变量 引用,通过按下按钮来生成Actor ,将它连接到角色,然后再次按下按钮时将它销毁。

HeroImage.png

步骤

在本操作指南使用 蓝图第三人称模板(Blueprint Third Person Template),其中启用了 初学者内容包(Starter Content)

  1. 在项目中,从主工具栏,单击 蓝图(Blueprints) 按钮,然后选择 打开关卡蓝图(Open Level Blueprint)

    SpawnDestroy_01.png

    关卡蓝图 是一种特殊蓝图类型,特定于每个关卡,可以充当关卡范围的全局图表。

  2. 在图表中单击右键,搜索并添加 从类生成Actor(Spawn Actor from Class) 节点。

    SpawnDestroy_02.png

    这样我们就能指定想要生成的类(或对象类型)来定义想要生成的事物。

  3. SpawnActor 节点的 类(Class) 引脚中,选择 Blueprint_Effect_Fire 类。

    SpawnDestroy_03.png

    这是作为 初学者内容包 的一部分创建的蓝图类,在创建项目时已经启用。

  4. 在图表中单击右键,搜索并添加 F 键盘事件。

    SpawnDestroy_04.png

    这个键将成为我们用于生成和销毁火焰效果的按键。

  5. 在图表中再次单击右键,搜索并添加 翻转(Flip Flop) 节点。

    SpawnDestroy_05.png

    该节点等同于开关。首次进入时将执行 A 引脚,第二次进入该节点时将执行 B 引脚。 执行B引脚后,下一次进入时将再次执行A引脚,在A和B引脚之间来回"翻转"。

  6. 点击并拖出 F 节点的 按下(Pressed) 引脚,连接到 翻转(Flip Flop)生成Actor(Spawn Actor) 节点。

    SpawnDestroy_06.png

    这样使我们能够执行(在按下F时)对生成Actor(Spawn Actor)节点的调用,以生成蓝图火焰效果。

  7. 在图表中再次单击右键,搜索并添加 销毁Actor(Destroy Actor) 节点。

    SpawnDestroy_07.png

    通过该节点,我们可以销毁任何指定的Actor。

  8. 翻转(Flip Flop) 节点的 B 引脚连接到 销毁Actor(Destroy Actor) 节点。

    SpawnDestroy_08.png

    第二次按下 F 时,将调用 翻转(Flip Flop)B 引脚,并将执行 销毁Actor(Destroy Actor) 节点。 销毁Actor(Destroy Actor)有一个 目标(Target) 输入引脚,指示要销毁的节点。 默认情况下,它设置为 自己(Self),在本例中是一个空指针,表示不清楚要销毁什么,因为关卡蓝图不能被销毁。 如果该销毁Actor(Destroy Actor)节点位于角色蓝图内部,我们指示它自己为目标,则将销毁我们的角色。

    在本例中,我们需要告诉销毁Actor(Destroy Actor)应当销毁什么(蓝图火焰效果)。 为此,我们需要创建对生成的蓝图火焰效果的引用。

  9. 右键单击 生成Actor(Spawn Actor) 节点的 返回值(Return Value) 引脚,并选择 提升为变量(Promote to Variable)

    SpawnDestroy_09.png

    在本例中,返回值(Return Value) 是我们生成的,也是我们将存储对其引用的对象,以便稍后可以将其销毁。

  10. 在变量的 细节(Details) 面板中,为其指定一个名称,如 CurrentFlames

    SpawnDestroy_10.png

  11. 变量(Variables) 下面 的**我的蓝图(MyBlueprint) 面板中 ,按住 Ctrl 然后将 CurrentFlames 变量拖放到图表中。将它连接到 销毁Actor(Destroy Actor) 节点的 目标(Target)** 引脚。

    SpawnDestroy_11.png

    我们现在指示销毁Actor(Destroy Actor)以对我们创建的蓝图火焰效果的变量引用为目标。

  12. 在图表中再次单击右键,搜索并添加 获取玩家角色(Get Player Character) 节点。

    SpawnDestroy_12.png

    这使我们能够找到指定的玩家角色,以便我们能够访问和获取关于该角色的信息。

  13. 拖出 获取玩家角色(Get Player Character) 节点的 返回值(Return Value) 引脚,搜索并添加 获取Actor变换(Get Actor Transform) 节点。

    SpawnDestroy_13.png

    这样我们就能得知玩家角色的 位置旋转缩放,我们将使用这个信息来定义蓝图火焰效果的生成位置。

  14. 获取Actor变换(Get Actor Transform) 节点的 返回值(Return Value) 引脚连接到 生成Actor(Spawn Actor) 节点上的 生成变换(Spawn Transform) 引脚。

    单击查看大图。

    目前,我们的图表几乎完成了。我们指定了按下 F 键时将在玩家位置生成蓝图火焰,并将它存储为变量。 再次按下 F 键时,将销毁所创建的变量(终止火焰效果)。最后一步是将火焰效果与玩家相连。 目前,生成火焰效果时,将在玩家位置处生成。但如果玩家四处移动,火焰将保持在所生成的位置不动。

  15. 单击左键并从 设置(Set) 节点的引用引脚拖出引线,搜索并添加 连接到Actor(AttachToActor) 节点。

    SpawnDestroy_15.png

    通过该节点,我们可以将火焰效果连接到另一个Actor。在本例中,我们想要将它连接到玩家角色。

  16. 使用 获取玩家角色(Get Player Character) 节点并按以下所示进行连接,将 位置规则(Location Rule)旋转规则(Rotation Rule) 设置为 吸附到目标(Snape to Target)

    单击查看大图。

    这里我们所做的是,将火焰效果的引用变量连接到玩家角色,让它的位置和旋转与玩家相匹配。

  17. 单击 编译(Compile) 按钮编译蓝图。

    SpawnDestroy_17.png

  18. 返回到主关卡编辑器窗口,从 主工具栏 单击 运行(Play) 按钮以在编辑器内运行。

    SpawnDestroy_18.png

最终结果

在编辑器中运行时,按下 F 将生成火焰效果,并且效果与玩家角色相连。 火焰与角色相连时按下 F 键,将使效果消失,再次按下 F 键会重新生成效果。

另一种实现方法是 激活停用 蓝图火焰效果中包含的粒子效果。

单击查看大图。

在上述示例中,我们使用 事件开始播放(Event BeginPlay) 节点在游戏开始时生成蓝图火焰,并将它连接到玩家角色。 我们还停用了粒子效果,在游戏开始时让关联声音淡出。 当按下 F 键时,由于蓝图火焰效果已经生成(只是没有激活),我们会激活效果并淡入音频。 再次按下 F 键时,没有销毁效果,而是停用效果并淡出关联声音。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback