当您的游戏开始增长,甚至在创建游戏时,尽可能多地组织游戏逻辑到自定义行为中是一个好主意。这有助于减少场景事件表中的事件数量,并使您的游戏更易于理解。
为您的游戏对象制作自定义行为可能在开始时似乎比直接在事件表中创建事件更复杂。行为具有更多限制,并需要您更仔细地思考对象的工作方式以及行为应该公开的动作/条件。但自定义行为也是一个非常强大的工具,允许您将逻辑封装在对象内部,并使场景的事件表尽可能简洁。
提示
如果您是经验丰富的游戏开发人员,甚至建议尽可能多地使用自定义行为制作您的游戏。
在本文中,我们将展示如何:
- 为对象创建简单的行为
- 然后如何与另一个对象互动
- 最后如何与另一个对象的自定义行为互动
1.如何使用行为为对象创建事件:
创建一个包含行为的扩展。名称由您决定。您可以使用扩展来组织与某些游戏对象相关的行为。
在这个扩展中创建一个行为。根据您的对象或要添加的功能命名:
提示
最好使用概括行为功能的名称。一开始可能不清楚 - 您始终可以稍后重命名行为。
单击“添加新函数”:
添加一个“doStepPreEvents”行为函数:
这个行为函数(也称为行为方法)会在每次屏幕渲染一帧时由游戏引擎自动调用。这是一个很好的地方,可以将更新对象的事件放置在其中。
现在函数显示在行为函数列表中:
我们现在可以在其中添加事件。在这个示例中,我们添加了两个事件:
- 当按下空格键时改变场景的背景颜色
- 当按下按钮时播放声音
当然,改变场景的背景颜色通常不包含在您的行为中。但这是验证行为是否起作用的简单方法。
提示
在制作复杂的“真实”行为时,您可以使用行为属性或一些变量来更新对象。例如,您可以在“doStepPreEvents”函数中使对象移动。
最后,我们回到游戏场景并将行为添加到对象中。首先,找到要添加行为的对象:
编辑对象,在“行为”选项卡中,选择“为对象添加行为”:
在列表中选择先前输入名称的行为。您会发现行为没有描述 - 您可以点击扩展编辑器中的“编辑行为属性”来添加描述。事实上,给行为命名和描述是一个很好的主意,以清楚地说明您的行为是用于什么目的。
尝试运行游戏。验证在按下空格键时场景背景颜色是否改变,或者在按下“P”键时是否播放声音。
例如,在平台游戏起始器中,按下空格键后,背景颜色变为绿色:
2.如何与另一个对象互动:
现在,我们可能想更进一步,创建与一个对象(如玩家)和其他对象(如敌人)相关的逻辑。
为此,我们无法使用“doStepPreEvents”,因为除了具有行为的对象外,无法使用其他对象。我们需要创建一个新的行为函数,这将是一个行为。
在行为中添加一个新函数,并选择“自定义(动作、条件或表达式)”:
我们可以看到它添加到行为函数列表中:
让我们根据它将要执行的操作重新命名它:
然后在此函数中,添加一个参数:我们的敌人对象。为此,我们添加一个类型为“Object”的新参数。然后,我们可以在事件中使用此对象。
导航到“参数”选项卡,在底部选择“添加参数”。然后,输入参数名称为“Enemy”,类型为“Objects”。您也可以将标签输入为“Enemy”(在场景事件表中添加动作时将显示此内容)。
一旦参数设置完成,我们现在可以在事件中将其用作对象。例如,当玩家与敌人碰撞时,我们让敌人播放声音。
接下来,我们在这个函数的配置中添加一个好听的名称和句子:
最后一步是在场景事件表中调用该函数。
提示
此时您可能会感到失望!“我不想在事件表中添加事件”。目前,您不能将对象传递给行为-这可能是将来的添加。
我们需要使用该操作。您将在场景事件表中的玩家操作中找到它,因为我们之前将行为添加到了玩家身上。
在场景中,为玩家(或您添加行为的对象)添加一个操作。然后选择“处理敌人”,我们的新操作:
最后,让我们为我们的敌人配置它:
提示
在这个示例中,我们使用了一个对象“SlimeWalk”作为敌人,但您也可以使用对象的组。
下面是结果:
如果运行游戏,您现在会看到玩家与敌人碰撞时会播放声音。
对于只有一个事件的场景事件表来说,效果不错!我们可以添加更多的对象,使行为更加复杂。或者我们可以为另一个应该与玩家行为相同的对象重用它。我们甚至可以禁用此行为,如果我们希望玩家与敌人碰撞时不播放声音。
决定要“推动”行为的程度取决于您。
- 与其他对象行为互动
让我们假设您的游戏变得更加复杂。例如,敌人现在也具有自己的行为。该行为有一个动作让敌人闪烁。现在,我们希望当玩家触碰它们时,敌人也会闪烁(因为它们被击中-我们可以想象让它们失去一些生命值或播放动画等)。
首先,“闪烁”行为已经存在。您可以搜索并安装到您的项目中。让我们将其添加到我们的敌人上。首先找到它:
然后将其添加到我们的敌人:
添加后,我们可以配置它:
现在,让我们回到玩家行为中。我们进入_HandleEnemies_函数,并添加一个新参数,类型为“行为”,紧随“Enemy”对象参数之后:
危险
这里有一个小问题:必须选择一个行为作为参数,以使其成为前一个对象的一部分。这将在未来的版本中改进。
现在函数知道敌人有一个名为“Blink”的行为了!让我们使用动作使它们闪烁:
危险
这里另一个小问题:由于添加了一个参数,现在必须返回事件表并编辑操作,以确保行为传递为参数:
(请注意第三个参数)。如果不这样做,操作将缺少最后一个参数,游戏将无法正常运行。
现在您应该可以运行游戏了,当玩家触碰敌人时,这些敌人会闪烁!
最后注意
我们在这里创建的行为很简单,但应该给您一种自定义行为可能性的想法。
考虑以对象和相互作用的行为来思考游戏是一个好主意。场景事件表是游戏中发生大部分行动的中心场所,使用行为使游戏中的大多数操作发生。