見出し画像

【GameMaker】終了したシーケンスは処理しよう【Sequence】

終了したシーケンスは、破壊しよう💥💥
破壊しないと、メモリリークを起こしゲームが重くなってしまう。

対応

シーケンスのモーメントを使って、最後のフレームに自壊処理を書く。

モーメントは、シーケンス編集画面内の⚡️マークから指定できる

モーメントは、特定のフレームのとき関数を発動できる機能。
関数とフレームの指定をして使う。
フレームは、そのモーメントの最終フレームを指定しよう。

赤枠の➕ボタンから関数を追加できる。黄色枠で発火するフレームを指定

追加する関数は、内部的にはスクリプトファイルと変わらないが、
モーメントから呼び出す都合上、引数を取ることはできない。
selfは使えるので、シーケンス自身のelementIDを指定する。

function scr_destroySelfSequence() {
	layer_sequence_destroy(self.elementID);
}

シーケンスが破壊されれば、そこで使われているオブジェクトも自動的に破壊される。

補遺

モーメントを使わずに、Stepイベントで終了したシーケンスを指定して破壊する方法でも実現可能。

「シーケンスが破壊されれば、そこで使われているオブジェクトも自動的に破壊される」と記載したが、sequence_instance_override_object()を使うとオーバーライド元のオブジェクトは破壊されないため、対応が必要になる。これも記事にしたい。

参考資料



この記事が気に入ったらサポートをしてみませんか?