kuront’s blog

主にUnityでのゲーム制作やってます。

【Unity】RPG制作 その11- アイテム使用処理(探索中)


 RPG制作その4とその5でアイテムのUIと所持数の処理は実装したのですが、実際に使う処理をまだ実装していないので、今回はアイテム使用処理を実装していきます。
今回かなり煩雑な内容になっています。参考程度に御覧ください。

 現在のゲームの場面に応じて処理が分けられるように、GameManagerでGAMEPHASEという名前で列挙型定数を宣言します。

 


クリックで展開

 そして、探索の開始時(街から探索に出た時)、戦闘に突入した時、戦闘が終わって探索に戻る時、探索が終わって街に戻る時にgamePhaseを変更します。


 


クリックで展開

 


クリックで展開


 


クリックで展開



 


クリックで展開

 それからアイテムの個別の効果を設定するItemDataスクリプトenum STATUSCONDITIONとPlayerManagerのenum STATUSCONDITIONを共用したいので、どちらもGeneralEnum型に宣言し直します。

 


クリックで展開

 PlayerManagerとItemDataのもともとSTATUSCONDITIONだった部分の前にGeneralEnum.をつけて置き換えます。
これでSTATUSCONDITIONをスクリプト間で共有できるようになりました。

 それでは今からアイテムの使用処理の実装をしていきます。今回は探索中に回復アイテムが使用できるようにしていきます。
 ItemUIのアイテムの項目をタップした時に、使用するターゲットを選択する為のパネルと、アイテム使用時にテキストを表示するためのパネルを作成します。ItemUICanvasの階層下にPanelオブジェクトを2つ作成し、それぞれ名前をItemUsePanel,UseItemMessageとします。そしてスクリプト、”ItemUsePanel”を新規作成し、ItemUsePanelオブジェクトに貼り付けます。

f:id:kuront:20210928052726p:plain

ItemUsePanel.csを開き、以下のように記述します。

 


クリックで展開

リストの作り方はItemUIと同じで、項目の生成個数をGameManagerのint型変数のPartyMemberCountの数にしています。現在はPlayer一人だけなので個数を1にしています。パネルの下に生成したゲームオブジェクトにItemEventクラス(今回新規作成するクラス)をAddComponentし、ItemEventクラスの関数をonclickに登録しています。

新規作成したitemEvent.csの中身はこんな感じです。

 


クリックで展開

 このItemEventクラスには、ItemUIの項目がタップされた時に実行されるSetItemTargetPanelと、ItemUsePanelの項目がタップされた時に実行される(回復アイテムの場合は)UseHealItemを定義しています。UseHealItemは先程のItemUsePanelの項目のonclickで実装しました。次はItemUIの項目のonclickにSetItemTargetPanelを登録します。ItemUI.csのSetItemUI関数の以下の部分で記述します。

 


クリックで展開

 これでitemUIのアイテムの項目が押された時にアイテムの使用者を選択するパネルが表示され、実際にそのパネルで対象を選ぶ(今回はPlayerのみですが)と、実際にアイテムの効果を使用対象に及ぼすことができるようになりました。

youtu.be

ついでにデバッグ用のUIも作成しておきました。
今回は以上です。