i-school - 3Dレールガンシューティング 発展4
 前回の手順で作成したステージのデータを活用した機能の実装を行います。



発展4 ーステージ内の移動経路情報の自動切り替え機能ー

設計


 いままでは固定で利用していた RailPathData について、今回の修正によりスクリプタブル・オブジェクト内のステージのデータを参照する方式に変更します。
このようにしておくことで、異なる RailPathData さえあれば、自動的にデータを読み込んで、同じ制御が行える状態にしておきます。
つまり、ステージのデータをデータベースであるスクリプタブル・オブジェクトから読み込むことで、経路移動の内容を動的に変更させることが出来ます。

 こういった設計を心がけていただくと、メインとなる経路移動の機能が出来上がれば、あとはデータを差し替えるだけで自動的に異なる経路移動の処理が運用できる設計になります。

 逆に考えると、汎用性のある機能を作成できないと、いつも同じデータのみを読み込んでしまう処理になってしまうため、ゲーム内容の発展性が失われしまうことにもつながります。


GameManager スクリプトを修正する


 GameManager ではステージの情報を管理します。そして、ステージの情報から次の移動経路の情報を参照し、
それを RailMoveController クラスへと提供するようにします。この機能が動作することにより、データを差し替えることで経路が自動的に変わる機能が実装できています。

 なお、現在は分岐のない状態での実装ですが、この先で分岐処理を作成しますので、処理内には TODO を用意しています。

 処理が非常に複雑ですので、しっかりと読み解いてください。
特に戻り値のあるメソッドや、Linq による処理などがありますので、スクリプトの表面だけを見ていては処理が理解できない状態になります。


GameManager.cs

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


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


RailMoveController スクリプトを修正する


 経路移動が最終地点まで到達したら、GameManager クラス側に対して、移動が完了したことと、
次の経路の情報があるかどうかを判断させる処理のメソッドを命令します。
該当するメソッドは先ほど GameManager クラス側に作成してありますので、あとは、すべての経路の移動が完了したタイミングに
GameManager クラスへの命令を記述して処理を実行します。

 また、冗長的になっていた処理の一部のリファクタリングを行い、Linq のメソッドを利用した処理に書き換えています。
一度書いた処理であっても、それが改善できる内容なのか、常に確認をおこなって、よりよい処理にしていくことがスキルアップの秘訣になります。

 処理が書けたら終わり、ではなくて、新しい処理に書き換えることが出来ないかどうかを調べてみることが大切です。


RailMoveController.cs

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




分岐なしの状態で、2つ以上の PathData を利用して移動が行われるかを確認する


 まずは分岐のないステージの情報を利用して、2つの異なる BranchData クラスの情報を読み込んで、
1つ目の経路移動がすべて終了したら、自動的に次の分岐先となる BranchData クラスの情報を読み込み、
異なる経路での移動が開始されるかを確認しておきます。

 この処理は、スクリプト内のどの部分によって機能しているかをしっかりと理解してから、次の分岐を作成する処理へ移ってください。



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

 => 次は 発展5 ー経路分岐用ポップアップウインドウの作成ー です。