将动作应用于其他实例


DnD™ 库中的大多数动作都可以选择以不同方式应用动作。这称为设置动作 作用域,它可以是以下几种方法之一:DnD™ 应用于 基本上你告诉 GameMaker Studio 2 从哪个实例执行动作。 默认操作范围是 自身(self),这意味着一旦将物体创建为房间中的实例,该实例将运行动作代码。 但是,这并不总是你想要的,并且你可能希望某些动作影响房间中的其他甚至所有实例。 这是改变动作 作用域 的地方。

下面列出了执行动作的不同作用域,但应注意以这种方式更改动作的作用域 仅将新作用域应用于该动作,而 应用于链中的后续动作。如果要将动作作用域更改应用于多个链式动作,请首先使用 应用到... 动作。

这是动作的默认作用域,只是声明动作只应由运行代码的实例调用。


其它(other) 作用域有两个主要功能,它返回的值取决于你使用它的位置和方式。在 碰撞事件 中,其它 将返回唯一的 实例 ID 值(用于区分每个物体的各个实例的唯一值),因此你可以创建一个 “子弹” 实例并使用拥有作用域为 其它 的碰撞事件的 “玩家” 实例,该事件会在碰撞时移除 “玩家” 物体生命点,然后返回 自身(self) 作用域以销毁 “子弹” 实例。

在碰撞事件之外,其它 设置的行为就像设置为 noone 一样,除非 从一个范围的动作块中调用它。这意味着如果将一组动作的作用域更改为特定物体,则在调用这些动作时,其它 作用域将返回最初调用动作组的实例的实例 ID。例如,你可以运行 应用到... 动作,然后在下一个代码块引用中将范围设置为 其它,以对运行整个事件块的实例执行动作,而不是在应用到代码块中作用域的实例。下图给出了一个例子:DnD™ 作用域 在图像中,我们正在检查实例中的鼠标按下,如果检测到一个,我们使用 “应用到...” 动作更改作用域。接下来的两个动作块现在从 “obj_Player” 实例调用(如果有多个动作块将为 所有 动作运行),因此物体将更改其精灵,然后在 其它 位置创建一个物体,即 :正在运行事件的物体的位置并检测到鼠标按下。


当你将动作的作用域设置为 所有(all) 时,你告诉 GameMaker Studio 2 为当前房间内的每个活动实例运行该动作块。 例如,创建 摧毁物体实例 动作并将其作用域设置为 所有 将导致房间中的每个实例消失,无论它们是从哪个物体创建的。


一个动作也可以给它一个 物体 作为它的作用域。 这意味着给定物体的 所有 实例将在调用它的同时运行该动作。因此,如果你在房间中有 100 个敌人实例,并且你想将它们全部设置为指向特定点。你将调用 设置点向 并将动作范围设置为物体 “obj_Enemy”,并且在调用它时,该物体的所有实例都将更改方向。


表达式(Expression) 输入字段供你输入一个你希望执行动作的实例 id。它可以是从 房间编辑器 分配给实例的唯一 ID 值,也可以是你存储在变量中的实例的 ID(变量将是输入值),或者它甚至可以是使用的表达式代码,如下图所示:DnD™ 目标变量 在这种情况下,实例从代码给定的表达式创建的实例调用 设置精灵 动作 。 请注意,在这种情况下,正在创建的实例将在应用动作之前 首先 运行其 创建事件