对象选取
当一个条件或动作涉及一个对象时,GDevelop 必须在场景中做出关于影响哪个对象的决定。这个过程称为对象选取,遵循本页面中概述的一些基本规则。
规则
对象选取的规则如下:
- 条件和动作 (如果它们不是特殊的对象选取动作) 将针对每个选取的实例执行。
- 第一次使用一个对象时,默认情况下会选择该对象的所有实例 (除非第一次是使用“创建对象”动作)。
- 使用对象作为参数的条件只会选取满足该条件的对象,供接下来的条件和动作使用。
- 对象的选取仅影响当前事件及其子事件。一旦达到事件的结尾,选取的对象列表将恢复到其父事件的列表(如果没有父事件,则会被删除)。
特殊例外情况
- “选取所有实例”动作将恢复所有实例都被选取的对象列表。
- “随机选取一个实例”动作将从选取的实例中随机选取一个实例。
- “创建一个对象”动作将将新创建的实例添加到选取的对象列表中。如果在此之前对未经对象选取的对象使用它,则只会选取创建的实例。
- “考虑与之链接的对象”条件将取消未与其他对象的选取实例连接的对象的选取状态。
示例
示例 1: 没有条件
考虑以下示例:
这将根据规则 1 和 2,简单地旋转场景中所有现有的“对象”实例。
示例 2: 多个条件
考虑以下示例:
根据规则 2 和 3,第一个条件将仅选择鼠标悬停的对象实例。然后,第二个条件进一步通过保留 x 位置大于200的选取对象列表,过滤选取的对象列表。
最终,根据规则 1,只有被鼠标悬停且 x 位置大于200的对象将被旋转;所有其他对象将不会被旋转。
这里是一个演示这一点的图表:
示例 3: 选取所有实例
考虑以下示例:
首先,根据规则(2),仅会选择鼠标悬停的“对象”实例。然后,不使用选取的对象列表,特殊例外“选取所有对象”将再次选取场景中的所有实例。
这样做的效果是,当悬停在任何对象上时,所有的对象都会旋转。与示例 2 不同,示例 2 中只有悬停的对象被旋转。