我一般不想对该对象采取行动 我有8个实例(0,1,2,3,4,5,6,7) 我只需要例如在2,5和7上进行操作 怎么??
答案 0 :(得分:1)
这让我对来自软件工程背景的Construct 2感到困惑。
选择要生效的Sprite实例有点像过滤数据库。您从列表中的所有实例开始,然后使用条件过滤掉它们。如果可能,Construct 2将自动猜测您想要的实例。 (就像你刚刚在EnemySpawn产生敌人一样,它会知道你的下一个参考敌人只是最后一个创造的。)
这在大多数情况下神奇地起作用,但您可以选择一组具有以下几种条件的对象:
比较实例变量 比较一个对象的实例变量的当前值。
设置布尔实例变量 测试对象的布尔实例变量之一是否设置为true。 (反转条件以测试是否为假。)
选择唯一ID(UID) 选择与给定唯一ID(UID)编号匹配的实例。
根据我的经验,添加一个实例变量并将其设置为跟踪Sprite的子集或sprite的状态是将操作限制为特定sprite组的最简洁方法。
另见Scirra手册中的Object Expressions:
您可以添加基于0的对象索引以从不同的对象实例获取表达式。例如,Sprite(0).X获取第一个Sprite实例的X位置,而Sprite(1).X获取第二个实例的X位置。有关更多信息,请参阅常用功能中的索引ID(IID)。您还可以为索引传递另一个表达式。负数从相反的一端开始,因此Sprite(-1).X获得最后一个Sprite的X位置。
这些不是“特定”对象ID(构造2称它们为索引ID或IID),而是按照创建顺序引用该类型的所有对象。
所以:
Enemy(0)
是第一个
Enemy(-1)
是最新的
Enemy(5)
是第6个敌人创造的,无视被摧毁的精灵(见下文)。
你必须要记住,如果你用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|
希望其中一种方法可以帮助您达到所需要的效果!