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

Unityでのインベントリの作り方とアセットのおすすめ

 Unityのゲーム制作でアイテムをしまうインベントリを作成したいことも多いはず。この記事では作り方の一例を紹介していく。
 なお、今までの記事でメニュー画面作成やアイテム管理を行っている。それをベースに作っていくので、見てない場合は先に以下を確認してほしい。
メニュー画面の作り方
アイテム管理のやり方とアセットのおすすめ
 また、インベントリ制作に役立つアセットについても紹介していく。

Unityでのインベントリ作成目次

インベントリのUI作成
インベントリのスクリプトを記述
インベントリ作成に役立つアセット
目次にもどる

インベントリのUI作成

 まずはインベントリのUIの見た目から作成していく。
 以前の記事で作成したMenuinsideの子要素として、右クリック→Create Emptyにより空のゲームオブジェクトを作成し名前をIteminsideとする。
 更にIteminsideの子要素としてinventoryとsetumeiの空のゲームオブジェクトの作成を行う。


 inventoryのコンポーネントとしてToggle Groupを追加する。Toggle Groupについても以下の記事で紹介しているのでわからない人は確認してほしい。
メニュー画面の作り方

 inventoryの子要素としてUI→Toggleと選択してToggleを作成。名前を「1」とする。これがアイテム欄の一つになる。
 「1」の子要素である「Label」を削除する。
 「1」のインスペクターのToggleコンポーネントを確認し、Groupの項目でinventoryのゲームオブジェクトを選択する。
 「Background」のimageコンポーネントのColorで色を設定。とはいえ後でスクリプトで設定するので、ひとまず適当で構わない。
 「1」の子要素「Background」の子要素「Checkmark」にOutlineのコンポーネントを追加。色をお好みで設定する(インベントリ欄を選択した際の枠の色になる。自分は黄色にした)。
 「1」の子要素「Background」の子要素として、UI→imageのように選択してimageを作成し「icon」という名前にする。
 「1」の位置とサイズを変更する。インスペクター欄のRect Transformを調整しよう。その際、ベースとなるメニュー画面は左上を基準点に作ったので、「1」に関しても左上を基準にする。

 今回は「1」をアイテムを表示する画面の一番左上に配置した。
 スクリプトを作成し名前を「SlotButton」として「1」にアタッチする(内容は後述する)。
 「1」を右クリック→duplicateで複製する。必要なアイテムスロットの数だけ複製する。
 名前は番号で、2、3、4、5、6・・・・とつける。今回は28まで作ったが、ここはお好みでOK。
 その番号順にアイテムスロットを以下のように並べていく。


 Iteminsideの子要素「setumei」の子要素のimageとして「setumeiran」を作成する。インスペクター欄で色をお好みで変更。ここがアイテムスロットを選択した際にアイテムの名前・個数・説明などを表示する場所になる。
 「setumei」の子要素として、プロジェクトビューを右クリックしUIからTextMeshproを2つ作成。名前をitemnameとitemsetumeiとする。
 お好みで配置(基準は左上に)。以上の作業によりUI配置は以下のようになった。


 以前の記事でScriptableObjectによるアイテム管理を行った。
 各アイテムのAssetファイルのItemiconについては特に指定してなかった。よって好きな画像を取り込みSpriteに変更したものを指定しよう。アイコン系アセット素材を使ってもいい。

 なお、今回は以下のフリーのアイコン画像のアセット(2023年6月現在無料)を使用した。

 RPG icons


目次にもどる

インベントリのスクリプトを記述

 続いてスクリプトを作成していく。前回のアイテム管理の記事でitemのゲームオブジェクトにアタッチするスクリプトを作った。
 ゲームオブジェクトの名前をitem→itemkanri、スクリプト名もitem→itemkanriに変更する(スクリプト内容から変えただけなので必ずしも変更する必要はない。スクリプト名を変更するならクラス名も変えること)。
 大量にシリアライズしている。インスペクター欄で指定しよう。
 Srartメソッドの処理はほぼ変化してない。新しくMotimonokoushinとslotkoushinのメソッドを作成しており、Startメソッドの最後でMotimonokoushinメソッドを呼び出している程度の変更点。

 Motimonokoushinメソッドでは1個以上持っているアイテムのリストを作る。そのリストのアイテムのアイコンをitemdataからとってきてアイコンに代入することで、アイテムスロットにアイコンが表示される。
 なお、このメソッドで本当は持ち物リストの要素数がアイテムスロット数を超えた場合の処理も行う必要があるが、それは別の記事で紹介していく。
 カラー設定については値が意味不明と思うかもしれない。どこでもいいのでカラー変更ができるコンポーネントを確認しカラー設定画面の以下を選択しよう。

 すると3色の最大値が1となる表現方法となる。スクリプトでのカラー設定はこの表現方法で行う必要がある。何色にしたいかここのカラー設定で考え、値を確認してスクリプトに記述しよう。

 slotkoushinメソッドではアイテムスロットが選択された際の説明欄の表示の処理を行っている。
 現在選択されているアイテムスロットを確認する。先ほど、アイテムスロットの名前は1、2、3、4・・・と数字にしているのでその番号をとってこれる。
 それをint型に直し、持ち物リストの要素数以下であればアイテムが入っているスロット欄を選択したことになるので、アイテム名、個数、説明を表示するようにしている。
 大元の設定は完成。続いて先ほど作成したSlotButtonのスクリプトの記述を紹介する(各アイテムスロットにアタッチしている。itemobjectにはitemkanriのゲームオブジェクトを指定)。
やっていることは単純で押された時にitemkanriスクリプトのslotkoushinメソッドを呼び出している。
よって別のアイテムスロットが選択された際に説明欄の表示も更新することができる。

後は以下のアイテムボタンが押された時の処理である。

以下のようにitemButtonスクリプトを作成しitemのゲームオブジェクトにアタッチする。
アイテムボタンが押された時にはインベントリや説明欄を表示しないといけない。よってActiveObjectにはIteminsideのゲームオブジェクトを指定。
またアイテムボタンが押された時に、1つのアイテムスロットが選択されている状態になっている。よってitemkanriのslotkoushinの処理も行いアイテム説明欄の更新も行うようにしている。
なお、アイテムスロットを最初に選択する前にどのスロットが選ばれた状態になっているかは、アイテムスロットのToggleコンポーネントのis ONの項目で設定可能。
 今回は「1」のスロットのみチェックをつけておこう。アイテムボタンを押した際に「1」のスロットが選択され黄色の枠がつく。

 最後にIteminsideを非アクティブにすれば完成。

 これでメニューを開いただけではIteminsideはアクティブ化せず、アイテムボタンを押して始めてアクティブ化されて表示される。

   ・追記
 メニューを開いた際に最初からアイテムボタンが押された状態だった場合にスロット更新処理が行われない。そこでメニューを開いた際にiteminsideがアクティブならslotkoushin()のメソッドを呼び出して処理を行うようにした。

 以上の作業を行うことで以下のようにインベントリを操作することが可能となる。

 メニューを開きアイテムのボタンを押すとインベントリと説明欄が表示される。
 今回は初期アイテムとしてロングソードとポーションを持っているので、2つのアイテムスロットが表示されている。
 選択したアイテムスロットは黄色の枠で囲まれる。
 空のアイテムスロットを選択しても何も表示されない。ロングソードやポーションのアイテムスロットを選択すると説明が表示される。
目次にもどる

インベントリ作成に役立つアセット

 インベントリ作成を行う場合にはアイコン素材が確実に必要になる。またここまで紹介した作り方ではなく、アセットを導入してインベントリを作成する手もある。
 そこで役立つアセットを紹介していくのでぜひ確認してみてほしい。

 3700 Fantasy RPG Icons Pack

 3700という大量のアイコンが入ったアセット。
 武器(各武器種の物が揃っている。例えば剣だけで50種類以上)、回復アイテム、スキル、食べ物、カギ、旗など様々なアイコンが揃っている。
 アイテムを入れておくインベントリ作成に役立つのはもちろん、スキルや装備のシステムを作る際も重宝する。
 3700という数があれば、自分のイメージしたアイテムに当てはまるアイコンがすぐに見つかることが多い。どんなゲーム制作でも役立つことが多く特におすすめの商品なので、ぜひ確認してみてほしい。

 Ultimate Inventory System

 アルティメットという名をつけるだけあり極めて高性能なアセット。
 各アイテムの形や大きさによって消費アイテムスロットが変化するインベントリを実装可能。
 アイテムを捨てたり移動させたりすることもできる。
 その他、アイテムの効果設定、装備、クラフトなど様々なことができるようになる。
 値段は高めだが、ゲーム開発を急加速させることができる優良商品なのは間違いない。ぜひ確認してみてほしい。

 Fantasy Inventory System

 インベントリを実装できる優れたアセット。
 ショップでアイテムを購入したり、プレイヤーにアイテムを装備するシステムも実装できる。
 これだけ機能がついている割には低価格。特におすすめの商品なので、ぜひ確認してみてほしい。

おすすめアセットまとめへ

 続きの記事は以下。
宝箱作成

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

page top