Game Maker Language リファレンス > 組み込み関数 用途別 > ゲームプレイ > instance_destroy
現在実行中のインスタンスを現在のルームから破棄します。
instance_destroy(id=self, execute_event_flag=true)
現在のインスタンスを破棄します。通常は呼び出した後、Destroyイベントに移行します。この機能を使用することで、ルームの再スタート時以外でもインスタンスの破棄を行うことができます。("persistent" が有効なオブジェクトはルームの再スタートでも破棄されないことに注意してください)
また最初の引数にインスタンスID、またはオブジェクトIDを指定することで、現在実行中でないインスタンスに対しても破棄を行うことができます。
instance_destroy(other); // Collisionイベントでの衝突した側の破棄処理を呼び出す instance_destroy(obj_Bullet); // "obj_Bullet" すべてを破棄する
さらに、二番目の引数に false を指定することで、Destroyイベントを呼び出さずに破棄することも可能です。
instance_destroy() は直ちにインスタンスを破棄し、イベントを終了する命令ではありません。例えば以下のようなコードのおいて
if hp <= 0 { instance_destroy(); } score += 10;
HPが0以下になり破棄処理が行われた後でも、スコアの加算は行われます。
またオブジェクトを動的に生成してそのインスタンスIDを保持する場合は、破棄タイミングに注意してください。 破棄されたインスタンスにアクセスすると "unknown resource" のエラーが発生します。
if bbox_right < 0 || bbox_left > room_width || bbox_bottom < 0 || bbox_top > room_height { instance_destroy(id, false); }
上記コードは、現在のルーム外に移動したインスタンスを Destroyイベントを呼び出さずに破棄しています