Skip to content

事件

在GDevelop中,事件定义了游戏的逻辑。您可以使用事件创建因果关系。例如,一个事件可能检测玩家与可收集物品发生碰撞,并相应地增加玩家的分数。您可以通过事件编辑器创建和管理事件。

事件编辑器截图

注意

您不必熟悉编程就能创建事件。但如果您熟悉编程,一些概念可能会感觉熟悉。

事件结构 - 条件和动作

事件由条件动作组成。

条件用于触发动作何时发生,还可以选择哪些对象或对象的实例受到事件动作的影响。例如,条件可以检查玩家何时与另一个对象发生碰撞。在这种情况下,事件中的动作仅当对象彼此接触时才会发生,并且仅会影响发生碰撞的对象。

注意

如果一个事件没有任何条件,关联的动作将在游戏的每一帧上运行(通常每秒60次)。

动作是在所有条件为真时发生的事情。一些动作的示例包括删除一个对象或增加变量的值。没有动作,事件将无法执行任何操作。

事件可以具有多个条件和多个动作。例如,一个事件可能有一个条件,检查玩家是否在跳跃并与敌人对象发生碰撞,以及一个动作,删除敌人对象并增加玩家的分数。

注意

您可以使用事件创建自定义条件、动作和表达式

事件执行逻辑

执行顺序

事件按照它们从上到下的列出顺序运行。事件的顺序可以对事件执行时发生的情况产生重要影响。

如果一个事件导致意外副作用,请验证事件表中列在更高位置的事件是否影响了在帧结束时定义的事件。

对象选择

当条件涉及到对象时,游戏必须决定哪些对象实例将受到任何后续动作和子事件的影响。这个过程称为对象选择

默认情况下,动作和条件将适用于场景中对象的所有实例。然后条件(和少量的动作)可以用于“过滤”(或“选择”)哪些对象后续动作或条件将适用于。

注意

对象选择,如果不理解,可能会导致混乱。确保阅读关于此主题的内容以全面了解!

TimeDelta

GDevelop会多次每秒评估事件并重新渲染对象。这样做的频率取决于计算机的资源:

在一台慢速计算机上,游戏可能以每秒25帧的速度运行。在一台快速计算机上,游戏可能以每秒60帧的速度运行(这是最大帧率)。

GDevelop试图在计算机之间保持帧率一致,但由于帧率可能会变化,一些操作的速度可能会不一致。

例如,考虑以下动作:

不带TimeDelta的条件

此动作在每一帧中递增一个变量的值。如果游戏以每秒60帧的速度运行,那么变量在10秒后将为18000。如果游戏以每秒25帧的速度运行,那么变量在10秒后将为7500。这种不一致性将对玩家的体验产生重大影响。

要解决这个问题,GDevelop提供了TimeDelta()表达式。这个表达式返回自上一帧以来经过的秒数。您可以使用此表达式确保游戏在不同帧率下运行得可预测。

例如,考虑以下动作:

带有TimeDelta条件

这个动作也在每一帧中递增一个变量,但变量的值乘以了TimeDelta()。这可以确保变量的增加速度相同,无论帧率如何。这保证了所有玩家都有相同的体验。

提示

作为经验法则,在一段时间内增加或减少一个值时,请使用TimeDelta()。如果您的动作只运行一次,则不需要TimeDelta()

创建事件

添加事件到事件表

  1. 打开事件表
  2. 选择选择并添加一个事件图标。
  3. 选择事件类型。

添加特殊事件

提示

如果选择添加一个新的空事件图标,左键单击事件列表底部的添加一个新事件快捷链接,或者在上述的选择并添加事件列表中点击标准事件,GDevelop会立即创建一个标准事件。右键单击事件列表中的快捷方式将显示上述列表,并从中选择任何特殊事件类型将立即创建该事件类型。

添加条件到事件

  1. 打开事件编辑器
  2. 找到现有的事件或创建一个新事件。
  3. 选择添加条件

添加动作到事件

  1. 打开事件编辑器
  2. 找到现有的事件或创建一个新事件。
  3. 选择添加动作

创建子事件

某些类型的事件可以有子事件。子事件是存在于其他事件中的事件。这些类型的事件仅当:

  • 父事件的条件为真时。
  • 已处理了父事件的动作时。

要向事件添加子事件:1. 打开事件编辑器。 2. 选择现有事件或创建新事件。 3. 选择所选事件的添加子事件图标。

子事件会嵌套显示在其父事件中。

注意

链接、评论和JavaScript事件无法有子事件。

事件类型列表

这一部分列出了不同类型的事件,每种事件都可用于向游戏添加不同类型的逻辑。如果您对事件的概念不熟悉,请参考前面的部分。

请参考链接页面以了解每种事件类型的更多信息。

注意

最常用的事件类型是**标准事件**。