テラシュールウェアさんのサイトにシングルトンのやり方が書いてある
URL: http://terasur.blog.fc2.com/blog-entry-311.html
whereの書き方の理解が微妙なので僕はここの岩永さんのBlogで調べた
URL: http://ufcpp.net/study/csharp/sp2_generics.html
もしシングルトンにしたいクラスが、Hogeクラスのときは、
Hoge hoge = Hoge.Instance;
のやり方でできる。
しかし、このように
1つめは、
SingletonMonoBehaviourクラス ↓ Hogeクラス ↓ HogeAクラス
2つめは、
SingletonMonoBehaviourクラス ↓ Hogeクラス ↓ HogeBクラス
と、シングルトン化したHogeクラス、「HogeA」と「HogeB」のコンポーネントをアタッチすれば、
HogeAとHogeBと同時にシングルトンにならない。
後から呼び出された側のコンポーネントがDestroyされてしまう・・・。
しかし
public static T Instance { get { Debug.Log (typeof(T)); // 追加 if (instance == null) { instance = (T)FindObjectOfType (typeof(T)); if (instance == null) { Debug.LogError (typeof(T) + " is nothing"); } } return instance; } }
と追加してみたが、ログには、typeof(T)は親クラスの「Hoge」と出てしまったしたので、できない。
やるとしたら、
1つめは、
SingletonMonoBehaviourクラス ↓ HogeAクラス
2つめは、
SingletonMonoBehaviourクラス ↓ HogeBクラス
と、やるべきだと思われる。
C#は多重継承できないので、HogeAとHogeBで共通で使いたいものを実装するにはどうしたものか。