【Unity備忘録】簡易シングルトン化

定期的に良く忘れる、簡易シングルトン化の方法。
DontDestroyOnLoadで、シーン跨ぎに対応。

長文のちゃんとした奴はヨソで探してください。

【やる事1】GameManagerのスクリプトにコードを追加


public class GameManager : MonoBehaviour
{

    public static GameManager Instance = null;

    void Awake ()
    {

        if (Instance == null)
            Instance = this;
        else if (Instance != this)
            Destroy(gameObject);    

        DontDestroyOnLoad(gameObject);

    }

}

【やる事2】スクリプトの実行順序を変更(GameManagerの初期化を先に実行させる)

  1. Unity上部メニュー -> Edit -> Project Settings
  2. Project Settingsウィンドウ -> Script Execution Order
  3. Default Timeと書いてある所の、右下の「+」をクリック。
  4. 全スクリプトの一覧が出るので、GameManagerを指定。
  5. 登録されたGameManagerを、Default Timeより上に、ドラッグ&ドロップ。
  6. 「3」でクリックした「+」の下にあるApplyをクリック。
    変更を確定しておく。
  • スクリプト名の右にある値が小さい程、実行順が早い。
  • ○○Manager系は、Default Timeより上に設定しておけば、まず間違いない。

シングルトンは公式でも推奨されていると思われる

以下で使用されているのを確認。

  • Unity公式アセット(Unity Technologies)の一部
  • Unityアセットストアで販売されている有名アセット
    • Corgi Engine
    • TopDown Engine

更に、Unityでは「GameManager」という名前でスクリプトを作成すると、表示アイコンが別の物に変わる仕様もある。

タイトルとURLをコピーしました