i-school - VRアクションゲーム 取得したアイテムの管理機能

設計


 Ray をポインターとして利用し、ゲームオブジェクトがアイテムであるかどうかを判定する機能を実装しました。

 この手順では、アイテムであった場合に、インベントリ(アイテムの管理機能)にアイテムのデータを登録する機能を実装します。
この機能を実装したら、先の手順において、登録したアイテム群をインベントリ情報としてゲーム画面に一覧表示し、それをポインターでクリックして使用できるようにします。

 まずはインベントリの機能を作成し、アイテムのデータベースを利用できる状態にします。
その後、アイテムを取得する処理を追加していく、という順番で実装します。


GameData スクリプトを作成する


 インベントリ機能を実装するため、シングルトンのクラスを作成し、その中に管理させます。
理由としては、いずれのクラスからでも参照しやすい環境を作るためです。


GameData.cs

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



GameData ゲームオブジェクトを作成し、GameData スクリプトをアタッチする


 ヒエラルキーの空いている場所で右クリックをしてメニューを開き、Create Empty をして新しいゲームオブジェクトを作成します。
名前を GameData に変更し、作成した GameData スクリプトをアタッチしてください。


インスペクター画像



 他のシーンでも利用することを念頭におき、プレファブにしておくことで利便性が高まります。
シングルトンクラスであるため、シーン遷移時には不要な GameData ゲームオブジェクト(重複する)が破棄されます。
必要であれば、各シーンに配置しておくといいでしょう。


DataBaseManager スクリプトを作成する


 前回の手順で作成したアイテムのデータベースである ItemDataSO スクリプタブル・オブジェクトをゲーム内で利用できるようにします。
他にもデータベースの機能を有する情報を管理する場合には、こちらのクラスで管理を行います。
 
 このクラスのシングルトンクラスとして作成します。
利用方法などは GameData クラスと同じです。


DataBaseManager.cs

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



DataBaseManager ゲームオブジェクトを作成し、DataBaseManager スクリプトをアタッチして設定を行う


 ヒエラルキーの空いている場所で右クリックをしてメニューを開き、Create Empty をして新しいゲームオブジェクトを作成します。
名前を DataBaseManager に変更し、作成した DataBaseManager スクリプトをアタッチしてください。


インスペクター画像


 使い方は GameData ゲームオブジェクトと同じになりますので、複数のシーンで利用が見込まれる場合には
プレファブにしておくといいでしょう。


ItemEvent スクリプトを修正する


 作成済の ItemEvent スクリプトを修正し、TODO 部分を実装します。


ItemEvent.cs

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



PlayerController スクリプトを作成する


 いずれかのボタンを操作した際に、アイテムを取得できるようにします。
こちらの例では X ボタンを指定していますが、別のボタンでも問題ありません。


PlayerController.cs

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


 スクリプトを作成したらセーブし、OVRPlayerController ゲームオブジェクトにアタッチします。


ゲームを実行して動作を確認する


 ItemEvent スクリプトがアタッチされているゲームオブジェクトにプレイヤーを侵入させます。
その状態でスクリプトで指定したボタンを押してください。GameData クラスのインベントリにアイテムのデータが登録されれば制御成功です。


GameData ゲームオブジェクトのインスペクター画像




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