instance_destroy

只要希望"销毁"实例,通常会触发销毁事件以及清理事件,即可调用此函数。 这将将其从房间中删除,直到房间重新启动(除非房间是持久性的)。调用没有参数的函数将简单地破坏当前在作用域中并运行代码的实例,但您可以提供一个可选的"id"参数并使用实例id值以特定实例为目标,或者可以使用object_index来瞄准特定对象的所有实例。 例如:

instance_destroy(other);      // destroy the "other" instance in a Collision Event
instance_destroy(obj_Bullet); // destroy ALL instances of the object "obj_Bullet"

第二个可选标志允许您为要销毁的实例"关闭"销毁事件。默认情况下,销毁事件将始终执行,但如果将此标志设置为false,则可以使实例销毁自身并跳过执行该事件。

重要 这将跳过销毁事件,但仍将调用清理事件。

值得注意的是,当销毁实例时,其销毁事件在调用destore函数的代码或操作之后立即被调用。此外,虽然执行销毁事件,但实例不会立即从游戏中移除,它将继续执行当前事件中包含的代码。只有当当前事件结束时,它才会从游戏中移除。

因此,如果您有以下代码:

if (hp <= 0) instance_destroy();
score += 10;

即使instance_destroyed函数已被调用,变量"分数"也将递增,并且该实例最终将在事件结束时从游戏中删除。注意这一点,就好像你已经(例如)为实例创建了一个动态资源,就像一个数据结构一样,然后在销毁事件中销毁了该资源,如果在执行销毁函数或操作之后有任何对它的引用,那么当销毁事件将它从游戏中删除时,你将会收到"未知资源"错误。

 

语法:

instance_destroy([id, execute_event_flag]);

参数类型描述
idObject Instance or Object Asset可选要销毁的实例 ID 或要销毁实例的对象资源(可选,默认为调用实例)
execute_event_flagBoolean可选设置为truefalse以执行或不执行销毁事件(可选,默认值为true)

 

返回:

N/A

 

例子:

if (bbox_right < 0 || bbox_left > room_width || bbox_bottom < 0 || bbox_top > room_height)
{
    instance_destroy(id, false);
}

如果实例在房间边界之外,上面的代码将销毁运行代码的实例,而不调用销毁事件。