【Unity】RPGを作るチュートリアルその83 フラグの管理クラスをシングルトンに

【Unity】RPGを作るチュートリアルその83 フラグの管理クラスをシングルトンに

シンプルな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を作っていきたいと思います。

 

     

ゲーム開発の攻略チャートを作りました!

CTA-IMAGE

「ゲームを作ってみたいけど、何から手を付けていいか分からない!」


そんなお悩みをお持ちの方向けに、todoがアプリをリリースした経験を中心に、ゲーム作りの手順や考慮すべき点をまとめたe-bookを作成しました。ゲーム作りはそれ自体がゲームのように楽しいプロセスなので、「攻略チャート」と名付けています。


ゲームを作り始めた時にぶつかる壁である「何をしたら良いのか分からない」という悩みを吹き飛ばしましょう!