【制作実習】Unityでシングルトンパターン

製品版コールアンドマジックでは、ゲーム全体で共通するコンテキストをシングルトンで実装する。

public class Context : MonoBehaviour {

	private static Context context;

	public static Context GetContext() {

		if (context == null) {
			GameObject target = GameObject.Find("Context");
			
			if (target == null) {
				Context.Assert("There is no object named Context in scene.");
			}
			
			target.SendMessage("Setup");
			
			context = target.GetComponent<Context>();
		}
		return context;
	}
//以下略

通常のプログラミングだと初回のゲッター呼び出しでのみインスタンス化し、グローバル領域に退避して持ちまわる。

さらにコンストラクタを非公開にすれば、一度しかインスタンス化されない事が保障されるというわけだ。

Unityの場合はスクリプトのインスタンスを取得する方法が特殊なので上記のような形になる。

こうしておけば、下記の一行で設定値をいつでも、どこからでも参照ができる。

//コンテキスト内のコンフィグオブジェクトから設定値を取得する
float width = Context.GetContext().config.baseWidth;
5年前

コメントを残す

メールアドレスが公開されることはありません。