シングルトンでマネージャーっぽいクラスを作ってみた
Unityで入力や音声などを管理する複数存在することがないクラスは、シングルトンのパターンで実装することが多いようです。
シングルトンとはインスタンスが1つしか生成されないようにする実装パターンです。
ManagerClass.cs
using UnityEngine; public class ManagerClass : MonoBehaviour { private static ManagerClass m_instance; public static ManagerClass Instance { get { if (m_instance == null) { // オブジェクト生成 GameObject managerObject = new GameObject("ManagerClass"); m_instance = managerObject.AddComponent<ManagerClass>(); // シーン遷移時に破棄させないようにする DontDestroyOnLoad(managerObject); } return m_instance; } } protected ManagerClass () { } }
実体にアクセスするメソッドが呼ばれた際に、実体が存在しない場合はインスタンスを生成します。
コンストラクタをprivateで宣言して、外部でインスタンスを生成させないようにしています。
GameObjectとして生成してからDontDestroyOnLoadでシーン遷移時に破棄させないようにしています。
これで入力や音声データなどを制御するManagerっぽいクラスが実装できそうですね。