C3官方手册之【 Construct 3 事件表如何工作】(新人必读)中文翻译版

116 阅读9分钟

C3官方手册之【 Construct 3 事件表如何工作】(新人必读)中文翻译版

Construct 3 初学者入门必读

Construct 3 引擎 由事件表进行驱动,在深入的学习之前,绝对有必要了解一下 事件表的工作方式!

Construct3引擎编辑器​

(非官方中文社区【Construct2/3篝火堆】QQ群:180911504。)

本教程为Construct 3 官方使用手册 的一个章节,原文为英文版。可使用下方链接访问原文

Construct 3 手册采用 Creative Commons BY-SA 3.0 许可 对外发布。

事件表如何工作(HOW EVENTS WORK )

如果您不熟悉 Construct3 的事件表(events),本节将向你介绍它们的工作原理。这是初学者必读的读物!通过对事件的运作方式有透彻的了解,您将能够制作出更好、更可靠的游戏。

若要了解如何添加和编辑事件,请参阅 事件表视图(Event Sheet View)。 www.construct.net/make-games/…

事件表被设计为易于阅读,并直观地“就这样运行”。但是,事件表的运行有着特定的、定义明确的规则,本文将进行详细介绍。

事件表通过筛选(filtering)满足某些条件(conditions)的特定实例( instances)来工作。然后,指定的动作(actions)仅针对这些筛选出的实例运行。

例如,请参考以下事件:

在此示例中,当 子弹 与 怪物 相撞时,满足事件条件。游戏中碰撞的 子弹 和 怪物 的具体实例由事件 “选中” (picked)。动作 仅在 “选中”的实例运行如果布局中还有其他 子弹 和怪物 实例,它们不会受到 健康值减一 和 销毁对象 **动作的影响。 **如果每一颗子弹都伤害了每个怪物,那么制作好游戏将非常困难!

理解事件表运行的另一条规则是  “如果满足所有条件,则对满足条件的实例执行动作”

多个条件(Multiple conditions)

向事件添加更多条件会逐步筛选要被执行操作的实例。 例如:

此事件的运行方式如下:

首先,屏幕显示区域内的所有怪物都会被选中。

然后,选择实例的范围,从屏幕内的那些怪物实例,被进一步减少到其中那些生命值低于 5 的怪物实例。

该动作使所有在屏幕范围内而且生命值低于 5 的怪物都直接朝向玩家。屏幕外或拥有 5 点及更多生命值的怪物不受影响。

因此,使用多个条件,您可以仅对同时满足多个条件的实例执行动作。使用编程语言或其他工具的用户可能会将其识别为逻辑上的“AND”。必须满足一个事件的所有条件,动作才被执行。 如果屏幕上没有怪物,或者屏幕上的怪物没有生命值低于 5的,则动作根本不会运行。

未引用的对象(Unreferenced objects)

请看以下事件:

如果用户按下 Spacebar 并设置了玩家的 强化模式开启 标志,则将执行 怪物:销毁对象 动作。请注意,在此事件中没有任何条件可以过滤或选择怪物。在这种情况下,所有 怪物实例都会被销毁。换言之,如果事件未在其条件中引用某个对象,则动作将应用于该对象的所有实例。

可以这样理解条件的运行模式:从选中所有实例开始,然后从选中的实例中逐步过滤它们。如果没有条件进行实例的筛选,则仍会选取所有实例,因此该动作会影响所有实例。

在事件之间重置选择(Picking resets between events)

一个事件结束后,下一个事件将从头开始。它的条件将再次开始从所有实例中筛选。

例外的是,子事件(sub-events)(显示为缩进)从其父事件停止的地方继续。子事件将从父事件筛选后遗留的实例中,进一步筛选实例。如果一个事件有两个子事件,它们都从父事件留下的同一组实例中进行选择 - 第二个子事件不受第一个子事件的影响。换言之,同一缩进级别的事件总是从同一组实例中选取,而较低缩进级别的事件总是从上一级事件传递下来的实例中进行筛选。

系统对象(The System object )

在 Construct 中,系统对象(System object)表示内置功能。它没有实例。

这意味着大多数系统条件不会选择任何实例:它们要么是 true(真),要么是 false(假)。如果它们为 false,则事件将停止运行,否则事件将继续,而所选取的实例并未更改。但是,也有例外:如果系统条件引用了对象(例如 随机选择一个实例),则会影响 选中 的对象。

系统动作(System actions)不会在任何选取的对象上运行:它们只是在满足事件的所有条件时简单的运行。

从上到下运行事件表(Events run top to bottom)

事件的顺序很重要。每个事件每个节拍(tick)检查一次(在大多数计算机上大约每秒检查 60 次),并在事件表中从上到下运行。运行每个事件后,将绘制屏幕,然后再次开始该过程。这意味着,如果一个事件执行了某些操作,而下一个事件撤消了它,您将永远不会看到发生任何事情。

这同样适用于一个事件内的情况:从上到下检查条件,从上到下执行动作。

但是,触发器(triggers)是一个例外。 请参阅上一个示例中按下空格键的条件:在条件左侧的绿色箭头:

这个箭头表示此事件是触发式的。这类事件不是每节拍检查一次,而是在实际发生时运行(或“触发”)。在这种情况下,当用户按键盘上的空格键时,事件将运行。它从不在其他时间进行检查。由于触发器在事件发生时运行,因此它们不会像其他事件那样按从上到下的顺序进行检查。这意味着触发器相对于其他事件的顺序并不重要(除了相对于相同类型的其他触发器,因为触发器仍然从上到下触发)。

一个事件中只能有一个触发器,因为两个触发器不能同时触发。但是,可以在“Or”块中放置多个触发器(请参阅下一节)。

'Or' blocks “Or”块

如前所述,必须满足所有条件才能运行事件。这称为“逻辑与”(Logical AND),因为“条件 1 与条件 2 与条件 3...”必须都为真。但是,您可以更改成在任一条件为真时运行事件。这称为“逻辑或”(Logical OR),因为如果“条件 1 或 条件 2 或 条件 3...”为真,则事件将运行。

通常,事件块作为“AND”块工作。要创建“OR”块,请右键单击该块条件部分最左侧位置,然后选择“切换为 OR 条件”。 然后,它将在每个条件之间显示 - OR - ,如下所示。

请注意,由于 OR 块在任何条件为 true 时运行,因此如果某些条件为 false 且未选择任何实例,则事件可能仍会运行。在这种情况下,操作仍将运行,但可能因为没有对象实例满足条件而选择零个实例。如果对未选取实例的对象执行任何动作,则不会发生任何动作。

另请注意,通常情况下,您只能在一个事件中放置一个触发器,但您可以将多个触发器放在一个“Or”块中,如果任何触发器运行,则该事件将运行。

您可以使用子事件来组合不同类型的块。这允许您构建更高级的逻辑,例如“Or”块后跟“And”块。

Looping conditions 循环条件

有些事件会循环(loop),这意味着它们会重复不止一次。请注意以下示例中的绿色圆形箭头表示循环。

这个示例表示,当布局开始时,“创建对象”动作将重复 10 次。最终结果是在启动时在布局中的随机位置创建 10 个怪物。

重复”条件之后还可以有更多条件。这些条件也会在每次重复中进行测试,并且必须为 true 才能执行动作。一个事件中甚至可能有多个循环,但这种情况很少见。

家族和容器(Families and containers )

家族:(限已付费版本使用)在 Construct 中,家族是指一些同类型对象的组合。你可以把 家族 当做 完全独立的对象 看待,使用完全相同的方式进行实例筛选或执行动作。 有关详细信息,请参阅“族”手册条目中的“在事件中选取族”部分。www.construct.net/make-games/…

容器是一项高级功能,可以使一组实例始终一起被选中。 有关详细信息,请参阅有关容器的手册条目。www.construct.net/make-games/…

Summary 总结

使用这个事件系统,可以快速轻松地为游戏制作复杂的逻辑。它是脚本或编程语言的一个非常强大的替代品,同时对于非技术人员来说更容易使用。

尽管本节已经描述了事件系统的基本部分,但它仍然没有涵盖所有内容。本手册部分的其余部分将介绍可在事件中使用的更多功能。参考部分还涵盖了 Construct 中的所有条件(conditions)、动作(actions)和表达式(expressions)。

你正在阅读用户手册的章节:

Online Manuals 》Construct 3 Documentation 》Project primitives 》Events 》How events work

Construct3引擎编辑器​

(非官方中文社区【Construct2/3篝火堆】QQ群:180911504。)