Unity シングルトンをResourcesから自動的に作成する

今回は、シングルトンをResourcesから自動的に作成する。
シングルトンはゲーム内で一つしか作成されないもの(サウンドマネージャーなど)
に利用すると便利なもの。
クラス名を呼べば、その一つだけのオブジェクトを呼ぶことができる。

今回は、
[Unity]Generic Based Singleton for MonoBehaviours完全版(?) | ケットシーウェア
を参考に、Resourcesからプレハブをシングルトン化して呼び出す処理を書く

MonoSingletonFromResources.cs
gist.github.com

変更点はusingと以下の部分

try{
    GameObject gameObject = Instantiate (Resources.Load (RESOURCES_PATH + type.Name)) as GameObject;
    instance = gameObject.GetComponent<T>();
    gameObject.name = type.Name;
}catch(ArgumentException e){
    Debug.LogError ("Problem during the creation of " + typeName);
}


サンプルコード
gist.github.com
gist.github.com

リソースの置き場所例

private static readonly string RESOURCES_PATH = "Prefabs/Singletons/";

f:id:suakijob:20150509010757p:plain

結果
f:id:suakijob:20150509011336p:plain

参考
【Unity】なんちゃらManagerクラスを作ろう(シングルトン) | naichilab - Android iOSアプリ開発メモ
C# で 実行中の クラス名 、 メソッド名 を取得する 方法
ドキュメントにないUnity独自のException - けいごのなんとか
Unity - StartCoroutineなどで、引数に渡すメソッド名をうっかり変えそびれるのを防ぐ方法 - Qiita
No hack, no work • Unity開発に関する50のTips 〜ベストプラクティス〜(翻訳)