1.3 - 生成的Actor

概述关卡脚本编写的示例关卡,示例1.3:生成的Actor,带事件调度器

Windows
MacOS
Linux

levelscripting_1_3.png

在本例中,当玩家进入一个盒体触发器时,将生成8个硬币拾取物,每个拾取物包含一个调度函数,当玩家收集硬币时发挥作用。为了打开下一组门,玩家必须收集所有8枚硬币。

关卡脚本

单击查看完整尺寸或 右键单击 并按另存为(Save As)。

在本例下,因为硬币蓝图是在游戏进程中产生的,所以在关卡脚本中不能像引用按钮蓝图那样引用它们。此外,脚本需要知道收集每个硬币的时间,这可能会因为很多事件而变得混乱。相反,生成的每个硬币都将其调度函数绑定到一个自定义事件。这样,当收集到硬币蓝图时,这些蓝图将调用调度函数并触发自定义事件。脚本将计算该事件已触发的次数,直至其与生成的硬币数量匹配为止。

对于许多典型的游戏场景,将多个函数绑定到一个自定义事件都很有用,例如生成一组敌人,然后在所有敌人都被杀死之后触发某事件。在本例中,您可以将每个生成的敌人绑定到一个"OnEndPlay"事件,该事件将在每有一个敌人被摧毁时触发。

BP_Double_Doors事件图表

单击查看完整尺寸或 右键单击 并按另存为(Save As)。

BP_Double_Doors蓝图Actor包含一个稍微复杂的门的设置。您可以看到如何使用时间轴 来驱动一些内容,包括每个门的位置、螺栓机构的旋转,以及应用于螺栓的材质。每当蓝图接收到开门或关门事件时,就会触发网络,这些事件是为该蓝图创建的自定义事件。

硬币设置

本例中的硬币还用于Blueprints_Advanced关卡的示例2.5

父项设置

单击查看大图,或者 右键单击 图片并选择"另存为"。

父蓝图 BP_Pickup_Parent 包含基本拾取物行为脚本,例如,使拾取物旋转并浮动的时间轴动画和用于收集拾取物的序列。 各子蓝图完整继承了此脚本,但是它们都具有额外脚本,以便在它们被收集时,各拾取物都具有不同的行为,尽管它们的基本特性相同。 这非常有用,因为对父蓝图的脚本进行的任何更新也将应用给其所有子蓝图。

当玩家Pawn与 拾取物触发器 球体组件重叠时,将调用 OnPickedUp 事件调度器 。每个子蓝图都将不同的事件绑定到 OnPickedUp,使得当玩家收集每个拾取物且 OnPickedUp 被调用时,输出的字符串各不相同。

单击查看大图,或者 右键单击 图片并选择"另存为"。

一般来讲,蓝图图中不能包含同一事件的多个副本,因此,如果父脚本和子脚本中都包含有 ReceiveBeginPlay 事件,那么将仅触发父脚本中的该事件。要解决此问题,你可以在子脚本中 右键单击 某个事件并选择 添加对父函数的调用(Add call to parent function)。通过这种方法,你将创建一个函数,当它被调用时,将触发父脚本中的相应事件。

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