Skip to content

对象选取

当一个条件或动作涉及一个对象时,GDevelop 必须在场景中做出关于影响哪个对象的决定。这个过程称为对象选取,遵循本页面中概述的一些基本规则。

规则

对象选取的规则如下:

  1. 条件和动作 (如果它们不是特殊的对象选取动作) 将针对每个选取的实例执行。
  2. 第一次使用一个对象时,默认情况下会选择该对象的所有实例 (除非第一次是使用“创建对象”动作)
  3. 使用对象作为参数的条件只会选取满足该条件的对象,供接下来的条件和动作使用。
  4. 对象的选取仅影响当前事件及其子事件。一旦达到事件的结尾,选取的对象列表将恢复到其父事件的列表(如果没有父事件,则会被删除)。

特殊例外情况

  • “选取所有实例”动作将恢复所有实例都被选取的对象列表。
  • “随机选取一个实例”动作将从选取的实例中随机选取一个实例。
  • “创建一个对象”动作将将新创建的实例添加到选取的对象列表中。如果在此之前对未经对象选取的对象使用它,则只会选取创建的实例。
  • “考虑与之链接的对象”条件将取消未与其他对象的选取实例连接的对象的选取状态。

示例

示例 1: 没有条件

考虑以下示例:

这将根据规则 1 和 2,简单地旋转场景中所有现有的“对象”实例。

示例 2: 多个条件

考虑以下示例:

根据规则 2 和 3,第一个条件将仅选择鼠标悬停的对象实例。然后,第二个条件进一步通过保留 x 位置大于200的选取对象列表,过滤选取的对象列表。

最终,根据规则 1,只有被鼠标悬停且 x 位置大于200的对象将被旋转;所有其他对象将不会被旋转。

这里是一个演示这一点的图表:

示例 3: 选取所有实例

考虑以下示例:

首先,根据规则(2),仅会选择鼠标悬停的“对象”实例。然后,不使用选取的对象列表,特殊例外“选取所有对象”将再次选取场景中的所有实例。

这样做的效果是,当悬停在任何对象上时,所有的对象都会旋转。与示例 2 不同,示例 2 中只有悬停的对象被旋转。