【Unity/Azure Kinect/C#】シングルトン?MonoBehaviourを継承したクラスを他のクラスから利用したい場合

プログラム

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」を継承するとインスタンスがどこかで作成されるよう。

 

どうやってインスタンスが作成されているかはわからないが、複数のインスタンスがあっても意味がないので、たぶんシングルトン風ではある。

コメント

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