Unityでのパラメータ管理・表示
Unityのゲーム制作ではキャラHP・攻撃力・防御力などのパラメータをどう管理し表示していくかが重要となるので、やり方の一例を紹介していく。Unityでのパラメータ管理・表示目次
パラメータの成長パラメータの表示
目次にもどる
パラメータの成長
多くのゲームで「レベルが上がるとキャラのパラメータが上昇する」という成長システムを作る必要がある。前回の記事でレベルアップシステムを作成したが、レベルが上がったのに合わせてパラメータを上げて管理していく必要がある。
レベルアップシステム
色々やり方はあるが、今回はレベルを代入することでパラメータが出る式を作ろうと思う。
まずは、ScriptableObjectで必要なパラメータを作っていく。ScriptableObjectがよくわからんという人は以下の記事を確認してみてほしい。
ステータス管理
今回は以下のようにパラメータを制作した。
一番上のMAXHP、MAXMP、ATK、DEF、INT、AGIなどは最終的な能力値とする(これまでの記事でもダメージ計算などで使用している)。
それとは別にCharaMAXHP、CharaMAXMP、CharaATK・・・といった変数を作った。これらはキャラのパラメータとする(後から装備やスキルのシステムを追加して、このキャラのパラメータに補正を加えたものが最終的な能力値となる予定)。
GrowMAXHP、GrowMAXMP、GrowATK・・・といった変数を作った。これはキャラのレベルが上がった際のパラメータの伸びを左右する成長値となっている。
FirstMAXHP、FirstMAXMP、FirstATK・・・といった変数を作った。これはレベル1の時の初期値である。
Assetファイルには今回は以下のように入力してみた。
続いて何でもいいがゲームオブジェクトを作り、「CharaStats」と名付けてプレイヤーのゲームオブジェクトの子要素とする。
CharaStatsにスクリプトをアタッチする。内容は以下の通り。
シリアル化を行っておりcharadataにはcharadataのAssetファイルをアタッチしている。
そして、(成長値×(レベル-1))/任意の数+初期値という計算式を作り、キャラのパラメータに代入している。
目次にもどる
パラメータの表示
ここまでで能力値の計算はできたので、次はテストも兼ねたパラメータ表示を行っていこうと思う。前々回の記事でメニュー画面の土台部分を作成している。
メニュー画面の作り方
今回はこのメニューのキャラの画面を出した時に、計算したキャラのパラメータが表示されるようにしていきたい。
以前の記事で作成したMenuinsideの子要素としてCharainside(空のゲームオブジェクトでいい)を作成する。
Charainsideの子要素としてCharaHP、CharaMP、CharaATK・・というようにTextmeshproを各能力値の数だけ作成する。加えて「基礎パラメータ」とTextmeshproコンポーネントに記述したTextmeshproを一つ作成する。
後は以下のように各Textmeshproの位置とサイズを調整する(下の7つについては基礎パラメータと書いてあるが各能力値のTextmeshpro。位置あわせのために入力しているだけで、スクリプトで書き換えるので問題はない)。
先ほど作成したステータス計算スクリプトに以下のように記述を追加する。
シリアル化しているので、各能力値のTextMeshProを指定しておく。
計算した能力値の変数を含めた文字列を作っている($を前につけ変数の周りを{}で囲むことで文字列に変数を含められる)。後はそれを各TextMeshProに代入している。
後はChara(Toggle)と今回作成したCharainsideとの紐付けを行う。
Charaのインスペクターを見てToggleコンポーネントのOn Value Changedを確認しよう。
以上のようにCharainsideをドラッグ&ドロップして指定し、GameObject.SetActiveを選択する。
次にCharaに以下のスクリプトをアタッチする。
ボタン用の汎用スクリプト。シリアル化しているので、ActiveObjectにはCharainsideを指定しておく。
今回は普通に押した時の場合にCharainsideをアクティブ化するように処理をしている(他のToggleを選択するとCharainsideが非アクティブ化し再度Chara選択を行った時に表示されないため)。
これで以下のようにchara選択時のみパラメーター表示され、他のToggleの際はパラメータが出なくなる。
続きの記事は以下。
アイテム管理