前回は Unity で見下ろし型ゲームを作るアセット TopDown Engine のサンプルゲーム Koala Dungeon の画面左上の HP バーなどの HUD のキャラクター画像を差し替えました。

TopDown Engine KoalaDungeon の HUD のアバター画像も主人公の画像に差し替えました。
しかし、ゲームによっては、HUD の一部を表示しない場合もあるでしょう。
今回は、 HUD の部品を消した場合の影響範囲とその対処法について紹介します。
※ Unity は 2021.3.14f1、TopDown Engine は 3.1.1 です。主人公のキャラクター画像はぴぽや倉庫様のキャラクターチップを使っています。
実際に消してテストプレイした結果
Unpack Completly で HUD を含む KoalaCameras 全体のプレハブとの関連付けを解除しました。

UD を含むゲームオブジェクト群のプレハブ関連付けを解除し、HUDの2つの要素を削除しました。
その後 HUD の HealthBar / AbatarBackground ゲームオブジェクトを削除し、テストプレイをしましたが敵からダメージを受けたりして HP が変わっても問題なく動作し、Console にもエラーや警告のメッセージは表示されませんでした。

TopDown Engine KoalaDungeon の HUD の2項目を削除してテストプレイしても問題なく動作しました。
HUD が不要ならば HUD ゲームオブジェクトを消しても問題なく動作するようです。
様々な組み合わせを試すべきかもしれませんが、要件としては HUD を表示したくないという要件はこれで十分です。
TopDown Engine のカスタマイズ性の良さを確認できる結果になりました。
※ 削除した HUD は Hierarchy ウィンドウで KoalaCameras の階層から←ボタンで抜けてシーンのゲームオブジェクトのツリー表示にしたあと Undo (Ctrl + Z) 数回で元の状態に戻しました。
ここからは、HP が減ったときに HealthBar も減る処理があるはずなので、その部分を調べて、HUD 要素をどのように設定し、バーを操作しているのかを確認してみようと思います。
TopDown Engine のダメージ処理
購入したアセットですが、内部のコードを掲載する権利はないかもしれないので、ざっくり記述します。
Health コンポーネントではダメージ処理の際に、 HealthBar があるかどうかを確認したあと、あれば HealthBar の値を更新していました。
このように、設定が有効かどうかを確認してから処理をするため、HUD ゲームオブジェクトを削除してもエラーメッセージなどが発生せずに済んだようです。
HUD の HealthBar と AbatarBackground の登録場所
HUD、HealthBar、AbatarBackground ゲームオブジェクトは、その数段上位の KoalaUICamera ゲームオブジェクトの GUIManager コンポーネントに設定されます。
HUD ゲームオブジェクトは空のゲームオブジェクトであり、登録されていると HUD 全体の表示/非表示を変更できます。
HP を横長のメーターで表示する HealthBar は GUIManager の HealthBars に複数指定することができ、サンプルでは左上の 1 個だけが登録されています。
登録された MMProgressBar コンポーネントは HP の表示と連動するようになります。
MMProgressBar コンポーネントは、直線状にメーターが増減するプログレスバーの UI です。

HUD の HP ゲージとキャラ画像は KoalaUICamera ゲームオブジェクトの GUIManager に設定されています。
キャラ画像を表示する AvatarBackground は GUIManager の DashBars に複数指定することができ、 HealthBar と同じくサンプルでは左上の 1 個だけが登録されています。
登録された MMRadialProgressBar コンポーネントは Dash (XBox 互換ゲームパッドでは Y ボタン)を行った際に待ち時間として円グラフが変化しました。
※サンプルゲームの既定の入力については Input | TopDown Engine Documentation で説明されています。

KoalaDungeon でゲームパッドXBoxの Y ボタンを押すとダッシュでき、次回使用までのウェイトに DashBar が使われているようです。
しかし、Unity エディタの Inspector ウィンドウで直接 MMRadialProgressBar コンポーネントの Tolerance の値を変更しても見た目は変化しませんでした。
かわりに同じく追加されている Image コンポーネントの値を変更すると Raidal 360 なので、先ほどの直線状のバーの動きとは異なり円グラフのように変化しました。
Dash の動作では変化するので、 MMRadialProgressBar コンポーネントの Tolerance の値を変えるだけではなく他の設定も必要なのかもしれません。

Unity Image で Radial 360 を選択したときの値にともなう表示の変化(円グラフのように変化)
HUD を削除した際の GUIManager のフィールド
以前に公式動画「TopDown Engine Tutorial : How to create a Character?」で主人公のゲームオブジェクトの見た目を差し替えた際に Missing になったフィールドを None に変更していました。
今回は HUD ゲームオブジェクトを削除したため、その登録場所の KoalaUICamera ゲームオブジェクトの GUIManager コンポーネントの HUD 関係のゲームオブジェクトやコンポーネントを登録するフィールドの設定は Missing になってしまいました。

HUD が必要ない場合削除するだけでもプレイはできますが、GUIManager の設定は Missing と表示されます。
この状態でテストプレイしても問題はありませんでしたが、先ほどの公式の手順と同じく Missing は None に変えたほうが作法としては良いかもしれません。
参照サイト Thank You!
- Unity
- TopDown Engine
- ぴぽや倉庫
- User Interface | TopDown Engine Documentation
- TopDown Engine Tutorial : How to create a Character?
- Input | TopDown Engine Documentation
コメント