1

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

4

1 回答 1

1

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

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

这在大多数情况下都能神奇地工作,但您可以选择一组具有以下几个条件的对象:

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

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

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

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

另请参阅Scirra 手册中的对象表达式

您可以添加从 0 开始的对象索引以从不同的对象实例中获取表达式。例如 Sprite(0).X 获取第一个 Sprite 实例的 X 位置,Sprite(1).X 获取第二个实例的 X 位置。有关详细信息,请参阅常用功能中的索引 ID (IID)。您还可以为索引传递另一个表达式。负数从另一端开始,因此 Sprite(-1).X 获取最后一个 Sprite 的 X 位置。

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

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

但是你必须记住,如果你销毁一个 IID 为 3 的对象,那么它之后的所有对象都将在列表中移动,并且它们的 IID 将减少 1。(就像一个 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|

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

于 2016-06-30T00:27:53.597 回答