【Unity】ゲームオブジェクトを常駐化させるための方法を紹介します!
Unityのゲームオブジェクトを常駐化させる方法を紹介します。常駐化させるとシーン変更による解放処理の対象外になり、実行中は永遠に残り続けるオブジェクトになります。どのシーンからも常駐化したゲームオブジェクトにアクセスできるようになり非常に便利ですが、リソースがメモリに残り続けてしまいますので計画的に利用しましょう。
Unityでゲームオブジェクトを常駐させることはできるのかな?
初めての方にも分かりやすく簡単に解説しますね。
常駐化スクリプトの作成
ゲームオブジェクトを常駐化させるためのスクリプトを作成します。Unityではゲームオブジェクトを常駐化させるための関数DontDestroyOnLoadが用意されています。今回のスクリプトではAwakeでDontDestroyOnLoad関数を呼びゲームオブジェクトを常駐化させます。
using UnityEngine;
public class DontDestroyOnLoad : MonoBehaviour
{
private void Awake()
{
DontDestroyOnLoad(gameObject);
}
}
ソースコードはGitHubにアップしてありますのでご確認ください。
code-examples/unity/DontDestroyOnLoad.csDontDestroyOnLoad関数一つで常駐できちゃうんだね!
常駐スクリプトを1つ用意しておくだけで、いつでも簡単にゲームオブジェクトを常駐できるので便利ですよ。
常駐オブジェクトの作成方法
ヒエラルキーで空のゲームオブジェクトオブジェクトを作成し、インスペクターで先ほど作成したDontDestroyOnLoadスクリプトを追加します。ゲームオブジェクトはResidentObjectという名前に変更しました。
ゲームオブジェクトにスクリプトを追加する方法はUnityでスクリプト拡張する方法をご覧下さい。
Unityを実行してヒエラルキーでDontDestroyOnLoad以下に常駐用のゲームオブジェクトが配置されているのを確認します。この状態で別のシーンに変更してもResidentObjectは実行を停止しない限り永遠に残り続けるゲームオブジェクトになります。
DontDestroyOnLoad関数一つで常駐できちゃうんだね!
共通のリソースやシングルトンオブジェクトなど常駐化すると便利ですが、リソースがメモリに残り続けますので最小限にしましょう。
まとめ
今回の記事のまとめだよ!
・DontDestroyOnLoad関数でゲームオブジェクトを常駐化する! ・リソースがメモリに残り続けるので最小限の利用にする! | ||
思ったより簡単にゲームオブジェクトを常駐化できたよ!
ゲームオブジェクトを常駐化させる方法を紹介しました。常駐化は便利ですがデメリットもあるので最小限の利用を心がけましょう。
関連ページ
こちらのページも合わせてご覧下さい