【GameMaker】終了したシーケンスは処理しよう【Sequence】
終了したシーケンスは、破壊しよう💥💥
破壊しないと、メモリリークを起こしゲームが重くなってしまう。
対応
シーケンスのモーメントを使って、最後のフレームに自壊処理を書く。
モーメントは、特定のフレームのとき関数を発動できる機能。
関数とフレームの指定をして使う。
フレームは、そのモーメントの最終フレームを指定しよう。
追加する関数は、内部的にはスクリプトファイルと変わらないが、
モーメントから呼び出す都合上、引数を取ることはできない。
selfは使えるので、シーケンス自身のelementIDを指定する。
function scr_destroySelfSequence() {
layer_sequence_destroy(self.elementID);
}
シーケンスが破壊されれば、そこで使われているオブジェクトも自動的に破壊される。
補遺
モーメントを使わずに、Stepイベントで終了したシーケンスを指定して破壊する方法でも実現可能。
「シーケンスが破壊されれば、そこで使われているオブジェクトも自動的に破壊される」と記載したが、sequence_instance_override_object()を使うとオーバーライド元のオブジェクトは破壊されないため、対応が必要になる。これも記事にしたい。
参考資料
この記事が気に入ったらサポートをしてみませんか?