Unity シングルトンパターン技術資料 – GameDirector の実装と動作確認
この技術資料では、Unityでシングルトンパターンを使用して、ゲームオブジェクトが一つしか作成されないことを保証する方法を解説します。具体的には、GameDirector
クラスを使ったシングルトンの実装例を示し、その動作を確認する方法をステップごとに説明します。
目次
シングルトンパターンとは
シングルトンパターンは、クラスのインスタンスが1つしか存在しないことを保証し、グローバルなアクセスを提供するデザインパターンです。ゲームの進行管理など、1つのインスタンスだけで管理したい場合に有効です。
実装例
GameDirector.cs
のコード
以下はシングルトンパターンを使用したGameDirector
クラスの実装例です。このクラスは、ゲーム中に1つだけ存在するゲームディレクションを担当します。
using UnityEngine;
public class GameDirector : MonoBehaviour
{
private static GameDirector instance;
// GameDirectorのインスタンスを公開
public static GameDirector Instance => instance;
// Awakeはオブジェクトが生成されたときに呼び出される
void Awake()
{
// instanceがまだ設定されていない場合は、このインスタンスを設定
if (instance == null)
{
instance = this;
Debug.Log("GameDirectorインスタンスが作られました。");
}
else
{
// 既にインスタンスがある場合、2つ目のインスタンスを破棄
Debug.LogWarning("2つ目のGameDirectorインスタンスが作られたため、破棄されます。");
Destroy(gameObject);
}
}
}
コードの説明
instance
フィールド:GameDirector
クラスの静的フィールドで、唯一のインスタンスを保持します。
Instance
プロパティ:- 他のスクリプトから
GameDirector
のインスタンスにアクセスするためのプロパティです。
- 他のスクリプトから
Awake()
メソッド:- ゲームオブジェクトが生成された際に最初に呼ばれるメソッドです。
- 最初のインスタンスが生成された場合にはそれを保持し、2つ目以降が作成された場合にはそのインスタンスを破棄します。
Unity でのセットアップと動作確認
ステップ1: Unity プロジェクトの作成
- Unity Hubを開き、新しいプロジェクトを作成します。
- テンプレート: 2Dまたは3Dプロジェクト
- プロジェクト名: 任意(例:
SingletonSampleProject
)
ステップ2: GameDirector
スクリプトの作成
Assets
フォルダを右クリックし、Create > C# Script
を選択して、新しいスクリプトファイルを作成します。- ファイル名を
GameDirector
に変更し、ダブルクリックしてスクリプトを開きます。 - 上記の
GameDirector.cs
のコードをスクリプトファイルに貼り付け、保存します。
ステップ3: ゲームオブジェクトにスクリプトをアタッチ
- Hierarchy ウィンドウで右クリックし、
Create Empty
を選択して空のゲームオブジェクトを作成します。 - Inspector ウィンドウで、G
ameDirector
スクリプトをアタッチします。
ステップ4: 2つ目のGameDirector
オブジェクトを作成
- 同様に、もう一つ空のゲームオブジェクトを作成し、そこにも
GameDirector
スクリプトをアタッチします。 - これにより、シーン内には2つの
GameDirector
が存在します。
ステップ5: 実行と結果確認
- Play ボタンを押してゲームを実行します。
- UnityのConsoleウィンドウにメッセージが表示されます。
- 最初の
GameDirector
インスタンスが生成された際に、以下のメッセージが表示されます。「GameDirectorインスタンスが作られました。
」 - 2つ目のインスタンスが生成された場合、以下の警告メッセージが表示され、2つ目のインスタンスは破棄されます。
「2つ目のGameDirectorインスタンスが作られたため、破棄されます。
」
- 最初の
実行結果の解説
- 最初のインスタンス: 正常に作成され、インスタンスは
instance
フィールドに保持されます。 - 2つ目以降のインスタンス: 既にインスタンスが存在しているため、
Destroy()
メソッドで破棄されます。
まとめ
この技術資料では、Unityでシングルトンパターンを使用し、ゲーム内にオブジェクトが1つしか作成されないことを保証する方法について解説しました。シングルトンパターンを理解することで、ゲーム全体を管理するシステムやリソースを効率的に制御することが可能になります。
Unityのデバッグメッセージを使うことで、シングルトンの動作を視覚的に確認できるため、初心者でも理解しやすい構造になっています。
ディスカッション
コメント一覧
まだ、コメントがありません