Unityに関連する記事です

 複数の防衛拠点を用意した場合の実装例です。2回の手順に分けて実装を行っていきます。
完成動画は、次の手順まで実装した場合のものです。これを目標に作成していきます。


<実装動画>
動画ファイルへのリンク



 以下の内容で実装を進めていきます。

発展20 ー複数の防衛拠点の作成 
29.Canvas に新しい耐久力用のゲージを作成する
30.UIManager スクリプトを修正して、新しい耐久力用のゲージの制御処理を追加する



 現在は防衛拠点が1つだけですので、そちらの上に耐久力ゲージを表示していますが、
こちらの耐久力ゲージを一本化し、ゲーム画面の上部などに表示するように変更します。

 また、複数の防衛拠点がある場合、そのどの防衛拠点にエネミーが侵入した場合でも、
共通の耐久力を減少させて、耐久力ゲージを制御するように処理を変更します。



29.Canvas に新しい耐久力用のゲージを作成する

1.設計


 現在は防衛拠点が耐久力の値を管理し、その値を耐久力ゲージに反映することで制御を行っています。
この方法の場合、各防衛拠点の耐久力がそれぞれ異なってしまい、耐久力を一元化できません。
そのため、複数の防衛拠点が1つの耐久力を管理するという設計に変更します。

 以前デバッグ用に GameData クラスに耐久力用の変数を用意していましたので、こちらを利用します。
利用する理由は、GameData クラスがシングルトンクラスであり、防衛拠点のクラス(DefenseBase)から参照が行いやすいためです。


GameData ゲームオブジェクト インスペクター画像(切り抜き)




 各防衛拠点にエネミーが侵入したら、その防衛拠点の耐久力ではなくて、GameData クラスの耐久力を減少させるようにします。
耐久力ゲージも、防衛拠点の耐久力ではなく、GameData クラスの耐久力の値を元にゲージの制御を行うようにします。

 このように変更することで、複数の防衛拠点の耐久力を一元管理していくことが出来ます。

 複数の防衛拠点が存在するようになると、ユーザーには、それらをなるべくすべて防衛するように考えてもらう必要があります。
またレベルデザインとしては、エネミーのルートを設定し直す必要があります。たとえば、複数の防衛拠点に同時にエネミーが侵入するようにします。



 耐久力を扱うための変数は GameData クラスにすでに用意されていますので、まずは、新しい耐久力ゲージの製作と、ゲージの制御を行うための処理を実装します。
次の手順では、残る部分の実装を行います。 


2.TopUISet ゲームオブジェクト内に SliderMultipleDefenceBaseDurability ゲームオブジェクトを作成する

 
 このゲージの製作手順は最低限の実装になっています。例えば、ゲージの上部に耐久力であることを表示したり、といった部分は未実装です。
自分で UI のデザインを考えていただき、必要と思われるものの実装に挑戦していただくようにお願いします

 ヒエラルキーには Canvas ゲームオブジェクトがあり、その 子オブジェクトとして TopUISet ゲームオブジェクトがあります。
新しい耐久力ゲージも画面の上部に設置したいため、この TopUISet ゲームオブジェクトの子オブジェクトとして作成します。

 なお、他の位置に耐久力ゲージを表示させたい場合には、Canvas ゲームオブジェクト内に適宜な位置のゲームオブジェクトを作成して、
その中で作成していくようにしてください。

 今回の耐久力ゲージは横長ですが、縦長のものであっても、丸型などであっても形状は自由で構いません。


完成時のヒエラルキー画像(参考)



3.TopUISet ゲームオブジェクトの子オブジェクトとして、Slider ゲームオブジェクトを作成する


 TopUISet ゲームオブジェクトの子オブジェクトとして、Slider ゲームオブジェクトを作成します。
名前を SliderMultipleDefenceBaseDurability ゲームオブジェクトに変更してください。

 子オブジェクトである Handle Slide Area ゲームオブジェクト群は利用しませんので、非アクティブにするか、削除してください。

 SliderMultipleDefenceBaseDurability ゲームオブジェクトのサイズは自由です。また、形状も自由に設定し、自分好みのものを作成してください。
ただし、ユーザー目線でゲーム画面を見ていただき、ゲームに支障をきたさない位置やサイズを心がけてください。


インスペクター画像(参考)



Sceneビュー画像(参考)



 続いて、各子オブジェクトの設定を行います。


1.Background ゲームオブジェクト

 ゲージの背景画像の設定を行います。画像は自由に設定してください。
サイズは親オブジェクトに依存させるので、変更しないようにしてください。ゲージの大きさが合わなくなります。


インスペクター画像(参考)



Sceneビュー画像(参考)




2.Fill Area ゲームオブジェクト

 ゲージの動く範囲の設定です。RectTransform コンポーネントの Left、Top などの値を 0 に設定してください。
この値は、Handle 〜 ゲームオブジェクトを利用するために設定されているものであるので、今回は利用しないため、0 にしておきます。


インスペクター画像



Sceneビュー画像




3.Fill ゲームオブジェクト

 ゲージの設定です。色や画像を変更することで、ゲージの色や画像が変更されます。
こちらも RectTransform コンポーネントの Left、Top などの値を 0 に設定してください。
この値は、Handle 〜 ゲームオブジェクトを利用するために設定されているものであるので、今回は利用しないため、0 にしておきます。
そうすることにより、ゲージの開始位置が 0 位置になります。


インスペクター画像(参考)



Sceneビュー画像(参考)




 以上でゲージの作成は完了です。
続いて、このゲージを制御する機能を実装します。


30.UIManager スクリプトを修正して、新しい耐久力用のゲージの制御処理を追加する

1.設計


 新しい耐久力用のゲージが完成したので、こちらを制御するための処理を実装します。
どのような処理を実装すれば制御が可能になるのかを考えてみて、なるべく自分で実装に挑戦してみましょう。

 上手く出来ても、出来なくても、挑戦してから教材を見直していただいた方が、確実にステップアップできます。


2.UIManager スクリプトを修正する


 Slider で作成した耐久力ゲージが完成しましたので、そちらをスクリプトより制御するための機能を実装します。
UI のゲームオブジェクトですので、UIManager に管理させるようにします。

 どのような情報が変数としてあれば、スライダーの制御が可能になるか、また、制御するためにはどのような処理が必要になるのか、
これらを考えてから処理の修正を行ってください。
その場合も、ご自分のスクリプトを参照しながら、修正が必要な部分だけ修正を行ってください。


UIManager.cs

<= クリックすると開きます

 
 スクリプトを修正したらセーブを行います。


3.UIManager ゲームオブジェクトの設定を行う


 UIManager ゲームオブジェクトのインスペクターを確認し、新しい変数に必要な情報をアサインします。

 Slider コンポーネントの制御を行うための変数を追加していますので、ヒエラルキーにある制御したい Slider コンポーネントがアタッチされているゲームオブジェクトを
ドラッグアンドドロップしてアサインしてください。Slider コンポーネントの情報が自動的に登録されます。


インスペクター画像


 以上で設定は完了です。



 以上でこの手順は終了です。

 次は 発展21 ー複数の防衛拠点の作成◆ です。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3Dレールガンシューティング(応用編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます