前回は Unity で見下ろし型ゲームを作るアセット TopDown Engine のサンプルゲーム Koala Dungeon の画面左上の HP バーなどの HUD のキャラクター画像を差し替えました。
しかし、ゲームによっては、HUD の一部を表示しない場合もあるでしょう。
今回は、 HUD の部品を消した場合の影響範囲とその対処法について紹介します。
※ Unity は 2021.3.14f1、TopDown Engine は 3.1.1 です。主人公のキャラクター画像はぴぽや倉庫様のキャラクターチップを使っています。
実際に消してテストプレイした結果
Unpack Completly で HUD を含む KoalaCameras 全体のプレハブとの関連付けを解除しました。
その後 HUD の HealthBar / AbatarBackground ゲームオブジェクトを削除し、テストプレイをしましたが敵からダメージを受けたりして HP が変わっても問題なく動作し、Console にもエラーや警告のメッセージは表示されませんでした。
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 です。
キャラ画像を表示する AvatarBackground は GUIManager の DashBars に複数指定することができ、 HealthBar と同じくサンプルでは左上の 1 個だけが登録されています。
登録された MMRadialProgressBar コンポーネントは Dash (XBox 互換ゲームパッドでは Y ボタン)を行った際に待ち時間として円グラフが変化しました。
※サンプルゲームの既定の入力については Input | TopDown Engine Documentation で説明されています。
しかし、Unity エディタの Inspector ウィンドウで直接 MMRadialProgressBar コンポーネントの Tolerance の値を変更しても見た目は変化しませんでした。
かわりに同じく追加されている Image コンポーネントの値を変更すると Raidal 360 なので、先ほどの直線状のバーの動きとは異なり円グラフのように変化しました。
Dash の動作では変化するので、 MMRadialProgressBar コンポーネントの Tolerance の値を変えるだけではなく他の設定も必要なのかもしれません。
HUD を削除した際の GUIManager のフィールド
以前に公式動画「TopDown Engine Tutorial : How to create a Character?」で主人公のゲームオブジェクトの見た目を差し替えた際に Missing になったフィールドを None に変更していました。
今回は HUD ゲームオブジェクトを削除したため、その登録場所の KoalaUICamera ゲームオブジェクトの GUIManager コンポーネントの HUD 関係のゲームオブジェクトやコンポーネントを登録するフィールドの設定は 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
コメント