【Unity】RPGを作るチュートリアルその83 フラグの管理クラスをシングルトンに
- 2025.06.26
- RPGチュートリアル
- RPG, Unity, ゲーム開発, チュートリアル

シンプルなRPGをUnityで作るチュートリアルシリーズの83回目です。
第82回ではゲームの実行中にフラグの状態を出力する機能、フラグの状態を切り替える機能を実装しました。
今回はフラグ管理のクラスをシングルトンにしておきたいと思います。
制作環境
MacBook Pro 2023 Apple M2 Max
Unity6 (6000.0.30f1) Silicon
作業内容と順序
シンプルなRPGを作る上でどんな作業が必要か、どんな順番で作っていくと良さそうか、別ページで検討しました。基本的にこの流れに沿って進めていきます。
チュートリアルの一覧
このシリーズ全体の一覧は以下のページにまとめています。
前回の内容
前回はゲームの実行中にフラグの状態を出力する機能、フラグの状態を切り替える機能を実装しました。
シングルトンへの変更
第81回でフラグを管理するためのクラスとして「FlagManager」を作成しました。第81回を書いた時点ではGetComponentなりFindAnyObjectByTypeなりを使って参照を取得して使うことを想定していましたが、イベント機能全体をざっくり実装し、ゲームとしての動作全体を流れで確認してみたところ、複数のシーンを使うことからシングルトン(ひとつしかないようにするデザインパターン)にしておいた方がフラグの不整合がなさそうだったので、今回の作業を入れておきたいと思います。
実際にやることは「SimpleLogger」のような形でstaticなフィールドとしてシーン内のインスタンスの参照を返すだけなので、作業量は少なめです。
コードの変更
「SimpleLogger」のコードをほぼコピペしてstaticなフィールドを追加します。
「_flagStates」のフィールドとStart()のメソッドの間にフィールドとプロパティを追加しています。Awake()でDontDestroyOnLoadを設定してシーンを跨いでも破棄されないようにします。チュートリアル後半で作成する「Title」シーンで「FlagManager」を初期化し、その状態を引き継いで「Game」シーンで使えるようになっています。
また、「Game」シーン側でも「FlagManager」を用意しておくことで、「Game」シーン単体でも動作するようにしています。
今回のブランチ
まとめ
今回はフラグ管理のクラスをシングルトンにしました。フラグの状態を持っているクラスが複数あると大変なので、シーン内に1つしかないようにして、かつアクセスもしやすくしています。
次回はイベントに関連するクラス同士の関係を考えつつ、定義値用のEnumを作っていきたいと思います。
ゲーム開発の攻略チャートを作りました!
-
前の記事
【Unity】RPGを作るチュートリアルその82 フラグに関するデバッグ機能を追加 2025.06.05
-
次の記事
記事がありません
コメントを書く