我如何对某些对象实例进行操作?

How do I make action for certain instances of object?

一般情况下我不想对对象进行操作 例如,我有 8 个实例 (0,1,2,3,4,5,6,7) 例如,我只需要对 2 、 5 和 7 执行操作 怎么样??

这让我对来自软件工程背景的 Construct 2 感到困惑。

选择要影响的 Sprite 实例有点像过滤数据库。您从列表中的所有实例开始,然后使用条件过滤掉它们。如果可能,Construct 2 会自动猜测您想要哪个实例。 (就像如果你刚刚在 EnemySpawn 生成了 Enemy,它会知道你的下一个引用 Enemy 只是最后一个创建的)。

这在大多数情况下都非常有效,但您可以 select 一组具有以下几个条件的对象:

比较实例变量 比较对象实例变量之一的当前值。

是布尔实例变量集 测试对象的布尔实例变量之一是否设置为 true。 (反转条件以测试是否为假。)

按唯一 ID (UID) 选择 选择与给定唯一 ID (UID) 编号匹配的实例。

根据我的经验,添加实例变量并将其设置为跟踪精灵子集或精灵状态是将操作限制为特定精灵组的最简洁方法。

另请参阅 Scirra 手册中的 Object Expressions

You can add a 0-based object index to get expressions from different object instances. For example Sprite(0).X gets the first Sprite instance's X position, and Sprite(1).X gets the second instance's X position. For more information see index IDs (IIDs) in common features. You can also pass another expression for the index. Negative numbers start from the opposite end, so Sprite(-1).X gets the last Sprite's X position.

这些不是 "specific" 对象 ID(Construct 2 称它们为索引 ID 或 IID),而是按创建顺序引用该类型的所有对象。

所以:
Enemy(0)是第一个
Enemy(-1) 是最近的
Enemy(5) 是创建的第 6 个敌人,忽略被摧毁的 Sprites(见下文)。

但你必须记住,如果你销毁一个 IID 为 3 的对象,那么它之后的所有对象都会在列表中移动,并且它们的 IID 会减一。 (类似于 LinkedList 数据结构)

如果你销毁实例D,其他实例转移

Instance |A|B|C|D|E|F|     -->     |A|B|C|E|F| 
IID      |0|1|2|3|4|5|     -->     |0|1|2|3|4|

希望其中一种方法可以帮助您获得所需的东西!