当サイトを閲覧いただきありがとうございます。
本記事では、Game Creator 2のモジュールのひとつである「Inventory」(インベントリ)について詳しく解説します。
Inventoryはアイテム定義/所持品(Bag)/装備(Equipment)/通貨(Currency)/商店(Merchant)/クラフト・解体(Tinker)/ドロップ(Loot Table)/ソケット・プロパティを包括的に扱う大規模な拡張アセットです。
公式ドキュメント:Game Creator 2 Documentation
Inventoryとは
ゲーム内で物品を扱うほぼすべての場面をまかなうモジュールです。
主要要素:
- Item:アイテムの定義(ScriptableObject)
- Runtime Item:シーンにある「そのアイテムの個別インスタンス」
- Bag:Item/Runtime Itemを入れるコンテナ(コンポーネント)
- Equipment:装備スロット定義(ScriptableObject)
- Currency:通貨(ScriptableObject。Coinを複数持てる)
- Merchant:商店コンポーネント
- Tinker:クラフト/解体UIを開く
- Loot Table:重み付き抽選ドロップ
- Sockets / Properties:武器にルーンを挿したり、攻撃力などの可変値を持たせたり
ItemとRuntime Item
- Item:プロジェクトに存在するテンプレート(Prefab的)。名前・重量・Propertiesのデフォルト値などを定義
- Runtime Item:シーン上のインスタンス。独自のProperty値(例:剣ごとの耐久値)を持てる
- セーブ/ロード対象:Runtime Itemは個別インスタンスとして保存される
- Unityの「Prefab ↔ Prefab Instance」の関係に似ています
導入
- Asset Storeで Inventoryモジュール を購入
Window > Package ManagerからインストールGame Creator > Install...でサンプルをインストール:- Items:すぐ使えるテンプレアイテム群
- UI:インベントリ/商店/クラフトUIテンプレ
- Examples:機能ごとのチュートリアルシーン集
- ExamplesはItemsとUIの両方に依存。依存は自動解決されます
Items(アイテム定義)
作成
Project右クリック → Create > Game Creator > Inventory > Item
Itemのセクション構成
ID
一意の文字列です。複製するとエラー表示(赤)されます。右のフィールドを展開 → Regenerate で新IDを生成できます。
Prefab
ドロップ/インスタンス生成用のプレハブ参照です。未設定ならドロップ不可になります。
Inheritance(継承)
Parent に別Itemを指定するとProperty・Socketを継承します。
比較動作:AがBから継承しているとき、「AはBと等しいか」は true(Aは Bの下位)。「BはAと等しいか」は false になります。
Information
Name/Description/Sprite/Color。ローカライズ用の動的プロパティが使えます。
Shape
- Width/Height:グリッド型Bagにおける占有面積
- Weight:重量(最大重量と比較)
- Max Stack:同一アイテムの最大積層数
- Socketが1個でもあるとMax Stackは自動的に1に制限されます(技術的制約)
Price
Currency(1種類のみ指定可)と数値。装着中のSocketアイテムの価格も合算されます(例:剣45 + ルーン20 = 65)。
Properties
動的に変わるキー付きの値(例:attack = 35)。Icon/Color/Number/Textを持ちます。
Sockets
他Itemを差し込める口です。基準Item(Base Item)を指定します。
Equipping
装備可能Itemの設定です。EquipmentアセットとBagの組合せで動作します。
Usage
- Consume on Use:使用で消費するか(ポーション ⇔ 笛)
- Can Use(Conditions):使用条件。成功しないと使用不可
- On Use(Instructions):使用時に実行。
Self = BagのついたGameObject、Target = BagのWearer - Execute From Parent:親ItemのCan Use/On Useを先に実行してから自分を実行可能(薬全般に共通の演出を親にまとめるパターン)
Crafting
レシピと解体で復元する材料の両方を定義可能です。
Properties(アイテム属性)
Propertyの追加
Add Property ボタンで追加します。ID(名前)/Is Hidden/Icon/Color/Number/Textを持ちます。
Mutable vs Immutable
- Mutable(可変) はRuntime Itemで変化する値(耐久値・残弾など)
- Immutable(不変) はゲーム中変わらない値
継承
Item上端の Inherit Properties トグルをONにすると親のPropertiesを引き継ぎます。左のトグルで個別に上書き値を設定可能です(例:Shield > Wooden Shield はdefenseを低く、Shield > Steel Shield は高く)。
Hidden Properties
UIに出さない内部フラグ用です(is-metal のような裏属性)。
Sockets(アイテム連結)
2つの役割
- Socket Prefab:自分が他のItemのSocketに挿さるときの見た目(Propコンポーネントを持つPrefab)
- Sockets(受け口):自分が他のItemを受け付ける口
受け口の設定
Add Socket ボタンで追加します。
- Base Item:受け入れるItemの型。そこから派生した子も全部受け入れます(Runeを指定すればRune of Attack/Rune of DefenseもOK)
- Socket ID:Propコンポーネントが挿入位置を識別するID
Propコンポーネント
Socketに差し込まれたPrefabを、自分の3Dモデル上の特定位置に自動で装着します。Socket IDごとに「挿入位置(子Transform)」を設定します。
Bags(所持品コンテナ)
種類
- List Bag:順番に並べるリスト型(推奨。扱いやすい)
- Grid Bag:グリッドに配置。形状のあるアイテムを敷き詰める(上級者向け)
Bag Options
- Maximum Height:保持できるアイテム数の上限
- Maximum Weight:超過すると Overloaded 扱い
- Heightは超えられないが、Weightは超えても追加自体は可能
- Equipment:Equipmentアセットへの参照(任意)
Stock / Wealth
- Add Stock:Itemと数量の初期在庫(例:商人の初期アイテム)
- Add Wealth:Currencyと初期所持額
- ランダムロット(宝箱など)は Loot Table を推奨
Skin UI
Bagの UI表示用スキンです。用途(Playerの持ち物/宝箱/商店)ごとに切り替えます。
Wearer(装着者)
装備Itemを実際に身に付ける対象です。既定は Self(BagとCharacterが同一GameObject上にある場合)。
Equipment(装備)
Equipmentアセット
Project右クリック → Create > Game Creator > Inventory > Equipment
Equipment Slot
- Base Item:受け入れるItemの型(例:
Headという親Itemを基準にすれば、全ヘルメットが装備可) - Bone:装備を表示するボーン参照。Humanoidはドロップダウン、非Humanoidはパス指定
標準テンプレの例
同梱Equipmentには以下7スロットがあります:
- Head/Body/Right Hand/Left Hand(装備)
- Consumable 3つ(消耗品ホットバー)
Currencies(通貨)
Currencyアセット
Project右クリック → Create > Game Creator > Inventory > Currency
Coin複数対応
Currencyは1つ以上の Coin を持ちます。各Coinは「基準単位に対する相対値」です。
多くのゲームは 単一Coin(Gold 1)で十分です。小数不可のため、小数2桁欲しい場合は値×100で管理し表示時にシフトします。
複数Coinの例(銅・銀・金)
- Copper = 1 → Silver = 25 → Gold = 125(= 5 Silver × 25 Copper)
- ギブ・テイクは常に 基準値 に換算した数値で操作します
Merchants(商店)
Bag + Merchantコンポーネントを同じGameObjectに付けます。
Configuration
| 設定 | 説明 |
|---|---|
| Infinite Currency | 商人の通貨無限化(プレイヤーから買い取る時用) |
| Infinite Stock | 販売アイテムが減らない |
| Allow Buy Back | プレイヤーが売った物を再入荷 |
| Sell Niche Type | 販売対象Item型を絞る(Herbs専門など) |
| Buy Rate | 商人がプレイヤーに売る時の倍率(1.0 = 定価) |
| Sell Rate | 商人がプレイヤーから買う時の倍率(通常0.5で半値買い取り) |
Tinkering(クラフト/解体)
概要
- Crafting:複数アイテムから1つ作る
- Dismantling:1つ解体して複数素材を回収
- 開き方:
Open Tinker UI命令
パラメータ
- Tinker Skin:クラフトか解体かを決めるスキン
- Input Bag:材料を取るBag
- Output Bag:生成物/素材を置くBag。通常同一だが分離も可能
- Filter Item:対象Item型(AlchemyならPotion、ForgeならEquipment、のように絞る)
設計のヒント
ジャンル別ステーション(鍛冶/調合)の違いはFilter Itemの親Itemを変えるだけです。
Loot Tables(確率ドロップ)
作成
Project右クリック → Create > Game Creator > Inventory > Loot Table
エントリ設定
- Rate:重み(確率ではなく相対値)。全体和に対する比率で抽選
- Loot:ItemまたはCurrencyを選ぶ
- Amount:固定 or ランダム数量
- No Drop Rate:「何も出ない」確率のゲタ
実行
Instruction Loot Table → Loot Tableアセット+出力先Bagを指定します。1回の実行で1エントリを抽選。複数回連続実行することで「宝箱の中身を複数個生成」ができます。
宝箱の典型パターン
ChestプレハブにTrigger → Loot Table 命令を複数回実行 → Chest自身のBagに格納。これにより、レベル内の宝箱を全く同じPrefabなのに中身だけランダムにできます。
User Interface(UIコンポーネント群)
Skinの3種類
| Skin種 | 関連コンポーネント | 役割 |
|---|---|---|
| Bag Skin | Bag UI | Bagの表示全体 |
| Merchant Skin | Merchant UI | 商店の取引画面 |
| Tinker Skin | Tinker UI | クラフト/解体画面 |
Bag UI
- 2種類:Bag List UI(List Bag用)と Bag Grid UI(Grid Bag用)
- パラメータ:
- Prefab Cell:各セルのPrefab(
Bag Cell UIコンポーネント必須) - Filter by Parent:表示するItem型フィルタ(タブに便利)
- Content:セルPrefabを並べる親オブジェクト
- Can Drop Outside:UI外へドラッグで世界にドロップ可能か
- Max Drop Distance:ドロップ可能距離
- Drop Amount:1つ/スタック全体
- Prefab Cell:各セルのPrefab(
関連UIコンポーネント
| コンポーネント | 役割 |
|---|---|
| Cell UI | 各スロットのセル。ドラッグ可否・ドロップ時/選択時のInstructionを受ける |
| Selected Cell UI | 現在選択中のセルの詳細表示 |
| Socket UI / Property UI | 対応するSocket/Property 1件を表示する子Prefab |
| Equip UI | Equipmentスロット/消耗品ホットバーUI |
| Wealth UI | 所持通貨表示 |
| Weight | 現在重量 / 最大重量の表示 |
Merchant UI
2つのBag UI(Merchant/Client)を橋渡しします。On Buy / On Sell(Player目線)にInstructionを割当可能です。
Tinker UI
レシピ/解体元リスト表示。Filter By Parent で対象Item型をフィルタします。
Visual Scripting リファレンス
Instructions(36)
Inventory > Bags(10)
| 命令 | 機能 |
|---|---|
| Add Item | Item型から新規生成してBagに追加 |
| Add Runtime Item | 既存Runtime ItemをBagに追加 |
| Remove Item | 指定Item型をBagから削除 |
| Remove Runtime Item | 指定Runtime ItemをBagから削除 |
| Drop Item | Item型をBagから世界に落とす |
| Drop Runtime Item | Runtime Itemを世界に落とす |
| Increment Bag Height | Bagの行数を増やす |
| Increment Bag Width | Bagの列数を増やす |
| Move Content To Bag | Bagの全内容を別Bagに移す |
| Move Wealth To Bag | Bagの全通貨を別Bagに移す |
Inventory > Cooldowns(5)
| 命令 | 機能 |
|---|---|
| Add Item Cooldown | Item型にクールダウンを付ける |
| Add Runtime Item Cooldown | Runtime Itemにクールダウンを付ける |
| Reset Item Cooldown | Itemのクールダウンをリセット |
| Reset Runtime Item Cooldown | Runtime Itemのクールダウンをリセット |
| Clear Cooldowns | Bagの全クールダウンを削除 |
Inventory > Currency(1)
| 命令 | 機能 |
|---|---|
| Change Currency | Bagの通貨値を加減 |
Inventory > Equipment(4)
| 命令 | 機能 |
|---|---|
| Equip Item | Item型の中からBag内のアイテムを装備 |
| Equip Runtime Item | 指定Runtime Itemを装備 |
| Unequip Item | Item型の装備を解除 |
| Unequip Runtime Item | Runtime Itemの装備を解除 |
Inventory > Loot(2)
| 命令 | 機能 |
|---|---|
| Instantiate Item | ItemのPrefabをシーンに配置 |
| Loot Table | Loot Tableから1件抽選しBagへ |
Inventory > Sockets(2)
| 命令 | 機能 |
|---|---|
| Attach Runtime Item | 最初の空きSocketにRuntime Itemを装着 |
| Detach Runtime Item | SocketからRuntime Itemを取り外す |
Inventory > UI(10)
| 命令 | 機能 |
|---|---|
| Open Bag UI | BagのUIを開く |
| Close Bag UI | BagのUIを閉じる |
| Open Merchant UI | 商店UIを開く |
| Close Merchant UI | 商店UIを閉じる |
| Open Tinker UI | クラフト/解体UIを開く |
| Close Tinker UI | Tinker UIを閉じる |
| Set Bag UI | Bag UIの対象Bagを差し替え |
| Set Drop Amount | ドロップ時の挙動切替 |
| Set Split Amount | スタック分割時の挙動切替 |
| Set Transfer Amount | 移送時の挙動切替 |
Inventory > Variables(2)
| 命令 | 機能 |
|---|---|
| Set Item | Item型をVariableに保存 |
| Set Runtime Item | Runtime ItemをVariableに保存 |
Conditions(24)
| カテゴリ | 条件 | 判定 |
|---|---|---|
| Inventory | Can Add | 指定ItemをBagに追加可能か |
| Has Item | Bagに指定Itemが最低数量含まれているか | |
| Has Runtime Item | Bagに指定Runtime Itemがあるか | |
| Is Overloaded | Bagの最大重量を超過しているか | |
| Is Type Of Item | Itemが別Itemと等価/下位か | |
| Is Usable | Itemが使用可能か | |
| Bags | Enough Space | Bagに最低空き数があるか |
| Cooldowns | Is Item Cooldown | 指定Itemがクールダウン中か |
| Is Runtime Item Cooldown | 指定Runtime Itemがクールダウン中か | |
| Equipment | Can Equip | 指定Itemを装備可能か |
| Is Equipment Slot Free | 指定スロットが空いているか | |
| Is Equippable | 指定Itemが装備可能か(型として) | |
| Is Equipped | Item型の装備が行われているか | |
| Is Runtime Item Equipped | 指定Runtime Itemが装備されているか | |
| Merchant | Can Buy | 指定ItemをMerchantから購入可能か |
| Can Sell | 指定ItemをMerchantに売却可能か | |
| Properties | Item Has Property | Itemが指定Propertyを持つか |
| Runtime Item Has Property | Runtime Itemが指定Propertyを持つか | |
| Tinker | Can Craft | 指定Itemをクラフト可能か |
| Can Dismantle | 指定Itemを解体可能か | |
| Enough Ingredients | クラフト材料が揃っているか | |
| Is Craftable | Itemがクラフト定義を持つか | |
| Is Dismantable | Itemが解体定義を持つか | |
| Wealth | Compare Wealth | 指定通貨の値が条件を満たすか |
Events(17)
| カテゴリ | イベント | 発火タイミング |
|---|---|---|
| Inventory | On Add | Bagにアイテムが追加されたとき |
| On Remove | Bagからアイテムが削除されたとき | |
| On Drop Item | BagのアイテムがTrigger上にドロップされたとき | |
| On Instantiate Item | Bagからシーンへアイテムがドロップされたとき | |
| Currency | On Change Currency | Bagの通貨値が変化したとき |
| Equipment | On Equip / On Unequip | 装備・装備解除時 |
| Merchant | On Buy / On Sell | 購入成功・売却成功時 |
| Sockets | On Socket Attach / On Socket Detach | Socket差し込み・取り外し時 |
| Tinker | On Craft / On Dismantle | クラフト成功・解体成功時 |
| UI | On Open/Close Bag UI | Bag UI開閉 |
| On Open/Close Merchant UI | 商店UI開閉 | |
| On Open/Close Tinker UI | Tinker UI開閉 |
実践的な使い方 ― やりたいこと別の構成ガイド
HPポーションを使う
- Item
Health Potionを作成。UsageセクションでConsume on Use = true Can UseにConditions(例:プレイヤーが生存しているか)On UseにStatsモジュールのChange AttributeでHP+50- UIのホットバーから右クリック → GC2内部が自動で「使用」処理を発火
武器にルーンを挿す
- 武器Item
Iron SwordのSocketsにBase Item =Runeを追加 Runeの子ItemとしてRune of Attack(Property: attack +10)を作成- Instruction
Attach Runtime Itemでプレイヤーの持ち物にあるルーン → 剣に装着 - 攻撃力Formulaで
sword.attack + attached_rune.attackを合算(Statsモジュール)
商人と取引
- NPCに
Bag+Merchantをアタッチ、BagにAdd Stock Interact時にOpen Merchant UI命令で取引開始(Client Bag = PlayerのBag)- Merchant UIの
On Buy/On Sellで音や通知を鳴らす
宝箱のランダム中身
ChestPrefabにBagコンポーネントOn StartTrigger →Loot Tableを3回呼ぶ- 開封時の
Open Bag UIでプレイヤーが取得
クラフトステーション(鍛冶/錬金の使い分け)
同じ Tinker UI を使い、Filter Item に親Itemを差し替えるだけで切り替えます。Forge → Filter = Equipment、Alchemy → Filter = Potion。
アイテム重量で移動速度を落とす
Trigger On Add / On Remove で Is Overloaded を確認し、真なら Change Movement Speed でキャラの速度を下げ、通知UIを出します。
クールダウン付きスキル化
Add Item Cooldown で使用後にクールダウン化。UIでは Is Item Cooldown で残り時間を監視して表示をグレーアウトします。
Tipsと注意点
- Max StackはSocket有無で強制変わる:Socketを持つItemはインスタンスごとに差分が出るためStack不可。スタッキング設計のときはソケット不要なItemに分けてください
- 継承を活かすと同じロジックを使い回せる:ポーション全般の「使用時にボイスを出す」ような処理は親ItemのOn Useに書いて、子は
Execute From Parentに頼る - 小数値は桁上げ:Currencyは整数のみ。0.50ドルが欲しいなら50セントと扱う
- Grid Bagは最後の手段:形状パズル要素が欲しくないならList Bagで十分。UI実装が格段に楽
- ItemとRuntime Itemを混同しない:テンプレとインスタンス。Equip/Drop/Hasの命令にも両系統がある点に注意
- MerchantのBuy/SellはPlayer目線:On Buy = プレイヤーが買った時。名前を逆に解釈しないよう注意
- セーブ対象:Runtime Item、Bagの内容、装備状態、クールダウンは標準でセーブ可能(Save&Loadシステム経由)
Move Content To BagとMove Wealth To Bagは別命令:宝箱の「全部持っていく」では両方必要- Filter by Parent を徹底活用:タブ分け/商人ジャンル/クラフトジャンルのすべてが親Itemの型で制御できます。Item階層設計が成否を握ります
公式リンク
- Game Creator 2 公式ドキュメント
- Game Creator 2 — Unity Asset Store
- Inventory 2 | Game Creator 2 — Unity Asset Store
まとめ
本記事では、Game Creator 2のInventoryモジュールについて解説しました。如何だったでしょうか。
InventoryモジュールはItem定義からBag管理、装備、通貨、商店取引、クラフト、確率ドロップまでゲーム内のアイテム管理に必要なすべてを包括しています。
特にItem継承による型フィルタの仕組みが強力で、タブ分け・商人ジャンル・クラフトジャンルのすべてを親Itemの型だけで制御できる設計は、大規模なゲームでも破綻しにくい堅牢さを持っています。
それでは次の記事も閲覧いただけると幸いです。
📚 シリーズ:Game Creator 2 完全ガイド(8/16)



