2016-06-23 61 views

回答

1

这让我很困惑,关于来自软件工程背景的Construct 2。

选择要生效的Sprite的哪些实例有点像过滤数据库。您从列表中的所有实例开始,然后使用条件过滤它们。如有可能,构造2会自动猜测您想要哪个实例。 (就像你刚刚在EnemySpawn产生了敌人,它会知道你的下一个参考敌人只是最后一个创建的敌人)。

这神奇地运行的大部分时间,但你可以选择一组对象与其中的几个条件:

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

是布尔实例变量集 测试对象的布尔实例变量之一是否设置为true。 (倒置如果假要测试的条件。)通过唯一ID(UID)

皮克拾取实例匹配给定的唯一ID(UID)号。

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

Object Expressions请参阅从Scirra手册:

您可以添加基于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)是创建的第六届敌人,无视摧毁精灵(见下图)。

但是你必须记住,如果你销毁一个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| 

希望这些方法可以帮助你得到你所需要的!

相关问题