【Unity】Unityでシングルトンデザインパターンを当てはめてみる

シングルトンパターンは、オブジェクト指向プログラミングにおいて使用されるデザインパターンの一つです。このパターンは、特定のクラスのインスタンスが常に1つだけ存在し、グローバルにアクセス可能であることを保証するために使用されます。

サンプル

Unityにおいても、シングルトンパターンはよく使用されます。以下に、Unityでシングルトンを実装する方法の一例を示します

public class SingletonClass : MonoBehaviour
{
    private static SingletonClass instance;

    // インスタンスへのアクセスを提供するプロパティ
    public static SingletonClass Instance
    {
        get { return instance; }
    }

    private void Awake()
    {
        // 既にインスタンスが存在する場合は、新たなインスタンスを作成せずに既存のインスタンスを使用する
        if (instance != null && instance != this)
        {
            Destroy(this.gameObject);
            return;
        }

        instance = this;
        DontDestroyOnLoad(this.gameObject);
    }

    // シングルトンクラスのメソッドやプロパティはここに追加する
}

上記の例では、SingletonClassはシングルトンクラスとして実装されています。instance変数は、クラス自体のインスタンスを格納するためのプライベートな静的変数です。Awakeメソッドでは、既にインスタンスが存在する場合は新たなインスタンスを作成せずに既存のインスタンスを使用し、DontDestroyOnLoadメソッドを使用してシーン間でオブジェクトが破棄されないように設定しています。

シングルトンクラスのメソッドやプロパティは、必要に応じて追加してください。他のスクリプトからはSingletonClass.Instanceを介してシングルトンクラスのインスタンスにアクセスできます。

このようにすることで、Unityプロジェクト内のどのスクリプトからでもシングルトンクラスのインスタンスにアクセスできます。ただし、シングルトンはグローバルな状態を持つため、適切に使用する必要があります。不用意に多用するとコードの複雑さや依存関係の問題が生じる可能性があるため、注意が必要です。