公開日:2023/07/08  更新日:2023/07/08

Unityでの装備変更について

 Unityのゲーム制作ではかなりの確率で装備変更システムを作る必要性に迫られる。
 やり方は色々あるがその一例を紹介していく。以下の記事の内容をベースに進めていくので先に確認してほしい。
ステータス管理
メニュー作成
アイテム管理
スクロールビューの作り方

Unityでの装備変更システム目次

装備変更システムの仕様
ゲームオブジェクトの構造
スクリプト記述
目次にもどる

装備変更システムの仕様

 今回は装備システムを以下の段階に分け、ボタンが選択されるとメソッドを呼び出して処理が行われるようにする。

①現在装備欄選択前の段階

 装備画面を開いただけで何も操作していない状態。
 装備できるスロットは5つある。装備スロットに装着できる装備タイプはキャラにより異なる。キャラがアイテムを装備している場合は表示する。
 段階を進めた後にESCキーを押した場合にはこの段階に戻すように処理する。

②現在装備欄が選択された段階

 現在装備スロットのどれかを選択すると、そのスロットに装備できるアイテムが装備可能欄として右に表示される(スクロールビュー)。
 選択した装備欄にアイテムが装備されていた場合には装備可能欄に「外す」と書かれたスロットが一番上に表示される。
 現在装備欄で選択されているアイテムと同じアイテムの装備可能欄のスロットには「E」が表示される。他キャラが装備しているなら他Eが表示される(他キャラが装備していてもまだアイテムが残っており装備できるなら他Eは表示されない)。
 この段階以上では左メニューが選択できなくなる。

③装備可能欄が選択された段階

 装備可能欄のスロットが選ばれた際、「外す」スロットであれば現在装備欄の選択されたスロットからアイテムが消えて①の段階に戻る。
 「外す」以外のスロットが選択されたのならアイテムの情報が右上欄に表示される(各アイテムのステータスは新たに)。また、持っている数が装備されている数を超えている場合に装着ボタンが表示される。
 この段階では現在装備欄が選択できなくなる(透明な画像を上にかぶせることで実現している)。

 この段階で「装着」が選択されるとそのアイテムを装着しつつ①の段階に戻る。

 今回の記事では以上のような装備変更システムを作成していく。
目次にもどる

ゲームオブジェクトの構造

 左メニューで「装備」を選択すると装備画面が開かれる。
 装備画面のゲームオブジェクト構造は以下の通り。

 装備可能欄(スクロールビュー)についてはスロットをプレハブ化しておき、Contentの子要素として必要分のゲームオブジェクトをプレハブから作成する。プレハブ構造は以下の通り

「外す」ゲームオブジェクト用プレハブ

装備可能アイテムスロット用プレハブ


 以上の各番号に該当する箇所は以下の通り。

 今回は以上のようにするが、自分好みに調整しよう。

 こういったUIを作成する場合には以下の点に気をつけて作るのがおすすめだ。

①階層が深いUIのゲームオブジェクトほど前に来る
 例えば画像(image)の上に文字(text)が出ている状態にしたいなら画像の子要素としてtextを配置するといい。意図的に階層を深くしたい場合はCreate Emptyで空のゲームオブジェクトを作って調整するといい。

②階層がより深い画像があるとその後ろにある(つまり階層が浅い)オブジェクト(ボタンなど)は選択できない
 なぜかボタンが押せない!って時のバグの原因として多いので注意。一方で押させたくないボタンの前に画像を配置して押せなくするテクニックもある(今回のシステム作成では多用している)。

③後から表示したいゲームオブジェクトは非アクティブにしておく。
 今回のシステムではSoubiinside、setumei、Scroll Viewに加え、yousoのプレハブの子ゲームオブジェクトのsoutyaku、soubityu、hokasoubityuは非アクティブにしている。
 メソッドでアクティブ・非アクティブを変更していく。

目次にもどる

スクリプト記述

 装備管理用の空のゲームオブジェクトを作成し、以下のsoubikanriスクリプトをアタッチする。
 装備可能欄(スクロールビュー)の処理について、わかりづらいと思うので説明する。スロットをプレハブ化しておき、Contentの子要素として必要分のゲームオブジェクトをプレハブから作成する。スクロールビューについてわからない場合は以下の記事を確認してほしい。
スクロールビューの作り方
 今回生成するプレハブは先述した2種類。「外す」のスロットと装備可能アイテム用のスロットとなる。
スロット用のプレハブには以下のスクリプトがアタッチされている。
 このスクリプトのメソッドを呼び出せば子ゲームオブジェクトが取得できるようになっている。
 アイテムの状態に合わせ、「装着」、「他E」、「E」といった画像を出すようになっている。

 ボタンスクリプトが以下の位置に配置されている。


 各箇所のボタンスクリプトでは以下のようにsoubikanriスクリプトの各メソッドを呼び出すようになっている。


Soubirankoushin()を呼び出す。


Soubiransentakukoushin()を呼び出す。


Soubiscrollsentaku()を呼び出す。


Soubisoutyaku()を呼び出す。

 加えてメニュー画面を開くスクリプトに処理を追加し、メニュー画面を開いている際にESCキーが押された時、soubikanriスクリプトの一番下のほうにあるsoubikosuukaeshi(itemdata soubihaaku)メソッドを呼んでsoubidankaiの変数が0を超えている場合は、soubikanriスクリプトのcancel()を呼び出し、現在装備を選択する前の状態に戻すようにしている。

 以上のようにスクリプトを作成することで以下のような装備変更が可能となる。


 続きの記事は以下。
サウンド管理

Unityのゲーム制作まとめへ戻る

page top