C#の癖なのか、Unityの癖なのか、どっちも初心者の中途半端C++プログラマーが若干悩んだ問題。なぜインスタンスを生成していないのに、thisでインスタンスを代入しているのか?
シングルトンパターンとは
クラスに対して1つのインスタンスしか生成しないようにする設計方法。あとはWikipediaをご参考あれ。
クラスのメンバーに自分自身の変数を定義する
クラス内にstatic領域の自分自身の定義を作って、thisでインスタンスを入れている。目的は、他のクラスからこのクラスにアクセスしたいから。
ConfigLoader.cs
public class ConfigLoader : MonoBehaviour
{
public static ConfigLoader Instance { get; private set; }
private void Awake()
{
if (Instance == null)
{
Instance = this;
}
LoadDemoSceneSetup();
}
}
でも、thisでインスタンスを入れているということは、すでにnewでインスタンスが作成されているということ?「MonoBehaviour」を継承したクラスは、インスタンスを作成しなくてもクラスの中のオーバーライドした関数が実行される。おそらく「MonoBehaviour」を継承するとインスタンスがどこかで作成されるよう。
どうやってインスタンスが作成されているかはわからないが、複数のインスタンスがあっても意味がないので、たぶんシングルトン風ではある。
コメント