1. はじめに
みなさん、こんにちは!今回は Unityで2D脱出ゲームを作る シリーズの パート2 です。前回は 部屋の作成 と 部屋の移動処理 を実装しましたね。今回は、 アイテムボックスの作成 と アイテムの取得&使用処理 を追加して、ゲームをさらに進化させていきます!
脱出ゲーム では、部屋に隠された アイテム を集め、それを使って 鍵を開けたり、仕掛けを動かしたり するのが重要な要素です。例えば、「鍵」を見つけてドアを開ける、というのは定番の流れですよね。今回は、その アイテムを管理するシステム を作成していきます。
この記事では、以下の2つを実装します。
- アイテムボックスの作成
- 画面上にアイテムボックスを表示し、取得したアイテムを管理できるようにする
- アイテムの取得&使用処理
- アイテムをクリックすると、アイテムボックスに追加され、後で使用できるようにする
この機能を追加することで、 ゲームらしさがグッと増し、プレイヤーが謎解きや探索を楽しめるようになります!
プログラム初心者の方でも大丈夫!
スクリプトの解説もしっかり行うので、ぜひ一緒に作っていきましょう!
2. アイテムボックスの作成
2D脱出ゲームでは、取得したアイテムを管理する「アイテムボックス」が必要になります。このステップでは、アイテムボックスを UIで作成 し、 スクリプトでアイテムの取得・使用を制御する方法 を紹介します。
2-1. UIでアイテムボックスを作成
まず、ゲーム画面にアイテムボックスを表示しましょう。
コチラの画像を使用して作成しました。

1. アイテムボックスのUIを作成
- Canvas の下に
Image
を作成 Itembox
と名前を変更Inspector
から アイテムボックスの画像 を設定
2. アイテムスロットを作成
Itembox
の下に 新しいImage
を作成- 名前を
Box0
に変更 Inspector
でBox0
に 鍵の画像 を設定RectTransform
のPos X
を調整し、アイテムボックスの 一番左に配置Box0
を 非表示 (SetActive(false)
) に設定
→ アイテムを取得したら表示する 仕組みにするため

3. アイテムを増やす場合
Box0
を 複製 (Box1
,Box2
…) すれば、複数のアイテムスロットを作成可能!- 例えば
Box1
には ドライバー、Box2
には メモ など、取得するアイテムごとにスロットを用意できます。
2-2. アイテムボックスを管理するスクリプトを作成
次に、アイテムを取得・使用できるようにするためのスクリプトを作成します。
1. C#スクリプトを作成
- プロジェクトウィンドウ を右クリック
→Create
→C# Script
を選択 - 名前を
ItemBox
に変更 Itembox
オブジェクトに アタッチ
2. スクリプトの記述
スクリプトを開き、以下のコードを入力してください。
using UnityEngine;
public class ItemBox : MonoBehaviour
{
public GameObject[] Boxs; // アイテムボックスのスロット(配列)
public static ItemBox instance; // インスタンスを作成(シングルトン)
private void Awake()
{
instance = this; // 自身のインスタンスをセット
}
public void SetItem(Item.Type type)
{
int index = (int)type; // アイテムの種類に応じたスロットを取得
Boxs[index].SetActive(true); // アイテムを取得するとスロットを表示
}
public bool CanUseItem(Item.Type type)
{
int index = (int)type;
return Boxs[index].activeSelf; // アイテムを持っているか確認
}
public void UseItem(Item.Type type)
{
int index = (int)type;
Boxs[index].SetActive(false); // アイテムを使用したら非表示にする
}
}
2-3. スクリプトの仕組み
このスクリプトでは 3つの機能 を実装しています。
✅ ① SetItem()
→ アイテムを取得 したときに、対応するアイテムスロットを 表示
✅ ② CanUseItem()
→ アイテムを 所持しているかどうかを判定(true / false
を返す)
✅ ③ UseItem()
→ アイテムを使用 したときに、スロットを 非表示 にする
2-4. アイテムボックスを設定
スクリプトを適用するために、以下の設定を行いましょう。
1. アイテムスロットを Boxs
に設定
Itembox
のInspector
を開くBoxs
の サイズをアイテム数に合わせて変更(例:3個ならSize = 3
)Box0
,Box1
,Box2
… をBoxs
のスロットにドラッグ&ドロップ
2. 実行してテスト
- これで、 アイテムを取得するとボックスに追加 されるようになります!
まとめ
- アイテムボックスの作成
Canvas
にItembox
を配置Box0
(スロット)を作成して非表示
- スクリプトでアイテム管理
SetItem()
:アイテム取得で 表示CanUseItem()
: 所持判定UseItem()
:アイテム使用で 非表示

次のステップでは アイテムを実際に取得できるようにする処理 を実装します!
3. アイテムの作成
脱出ゲームでは、プレイヤーが鍵や道具を見つけ、それを使って次のエリアへ進むのが一般的な仕組みです。ここでは、部屋の中に「鍵(key)」を設置し、それをクリックするとアイテムボックスに追加される仕組みを作成します。
3-1. UIでアイテムを作成
まず、鍵となるアイテムを room0 に配置します。
手順
- Hierarchy(ヒエラルキー)ウィンドウ で
room0
を選択 room0
の中にImage
を作成- 名前を “key” に変更
- Inspector(インスペクター)ウィンドウ で以下の設定を行う
- Imageコンポーネント に鍵の画像を設定
RectTransform
を調整して、鍵を適切な位置に配置(例えば、テーブルの上など)
- 鍵をクリックできるようにする
Add Component
から Button を追加Transition
をNone
に変更(見た目の変化をなくすため)

これで鍵が画面上に表示され、クリックできるようになりました!
3-2. アイテム管理スクリプトの作成
次に、アイテムがクリックされたときにアイテムボックスへ追加されるように、スクリプトを作成します。
手順
- Project(プロジェクト)ウィンドウ を開く
Assets
フォルダ内で右クリック →Create
→C# Script
- スクリプトの名前を “Item” に変更
- 作成した
Item
スクリプトを key にドラッグ&ドロップしてアタッチ - スクリプトを開いて、以下のコードを入力
using System;
using UnityEngine;
public class Item : MonoBehaviour
{
// アイテムの種類を定義
[Serializable]
public enum Type
{
Key, // 鍵
Item1, // 他のアイテム(例:ドライバーなど)
Item2,
Item3
}
public Type type; // このアイテムの種類
// アイテムをクリックしたときの処理
public void OnThis()
{
// アイテムボックスに追加
ItemBox.instance.SetItem(type);
// クリックされたアイテムを非表示
gameObject.SetActive(false);
// デバッグ用のログ出力
Debug.Log(type + " をGET");
}
}
3-3. 鍵のボタンに処理を設定
スクリプトを記述したら、鍵をクリックしたときに OnThis()
が実行されるように設定します。
手順
- 鍵(key)の
Inspector
を開く Button
コンポーネントのOnClick()
にある 「+」ボタン をクリックItem
スクリプトがアタッチされている keyオブジェクト をOnClick()
にドラッグ&ドロップNo Function
になっている部分をクリック →Item
→OnThis()
を選択
これで設定完了!
ゲームを再生し、鍵をクリックするとアイテムボックスに追加されるようになります。
3-4. まとめ
このステップでは、脱出ゲームで欠かせない「アイテムの取得機能」を実装しました。
- room0 に鍵を配置 し、クリック可能にした
- Item スクリプトを作成 し、クリックでアイテムを取得する処理を実装
- ボタンの
OnClick()
にOnThis()
を設定 し、クリック時にアイテムをアイテムボックスへ追加するようにした

次のステップでは、取得したアイテムを使って扉を開ける処理 を作成していきます!
4. アイテム取得処理の設定
アイテムを作成し、スクリプトを書いただけでは、まだゲーム内でアイテムを取得できるようになっていません。ここでは、実際にアイテムをクリックしたときにアイテムボックスに追加されるように設定していきます。
4-1. 鍵のボタン設定
まず、key
オブジェクトの Button
コンポーネントを設定します。
Hierarchy
ウィンドウでkey
を選択。Inspector
ウィンドウのButton (Script)
セクションを確認。On Click ()
のリストの+
ボタンをクリック。None (Object)
の部分にkey
オブジェクトをドラッグ&ドロップ。No Function
のプルダウンを開き、Item → OnThis()
を選択。

この設定により、ゲーム内で key
をクリックすると OnThis()
メソッドが実行されるようになります。
4-2. アイテム取得の動作確認
ゲームを再生して key
をクリックし、以下の動作を確認します。
✅ アイテムボックス
に鍵のアイコンが表示される
✅ key
オブジェクトが非表示になる
✅ コンソールに「KeyをGET」と表示される
もし、アイテムボックスに表示されない場合は、以下をチェックしてください。
ItemBox
オブジェクトのBoxs
に、鍵のアイコン (Box0
) が正しく設定されているかItem
スクリプトのSetItem(type);
が正しく呼び出されているかItemBox
のinstance
がnull
になっていないか(Awake()
が実行されているか)
4-3. 複数のアイテムを取得できるようにする
現在のスクリプトでは key
しかアイテムとして取得できませんが、他のアイテムも追加したい場合は Item.Type
に新しい種類を追加するだけで対応できます。
例えば、新しいアイテム Item1
を追加したい場合、以下の手順を実行します。
Item.Type
にItem1
を追加public enum Type { Key, Item1, // 新しいアイテム Item2, Item3 }
ItemBox
に新しいBox1
を作成し、Boxs
のリストに追加。room0
にItem1
のオブジェクトを作成し、Item
スクリプトをアタッチ。Item1
のOnClick()
にOnThis()
を設定。
このようにすれば、新しいアイテムを追加するのも簡単です。

これで、アイテムをクリックすると取得できる処理が完成しました!次回は アイテムを使って扉を開ける処理 を実装していきます。
5. まとめ
今回は アイテムボックスの作成 と アイテムの取得処理 を実装しました!
まず、Canvas の中に Itembox を作成し、アイテムの表示エリアを準備しました。
次に、アイテムを取得したときにアイテムボックスに追加されるよう、ItemBox スクリプト を作成しました。
このスクリプトを使って、アイテムの取得・使用を管理できるようになりましたね!
また、アイテム自体の設定として、Item
クラスを作成し、アイテムをクリックするとボックスに追加され、消える処理 を実装しました。OnClick()
を設定することで、ボタンを押すだけでアイテムを取得できるシステム が完成しました!
この仕組みを使えば、さまざまなアイテムを追加して、ゲームの仕掛けを増やすことができます!
例えば、鍵を取得したら扉を開けられるようにする など、ゲームの進行に合わせたアイテムの使い方を考えてみましょう。
次回は アイテムを使って扉を開ける処理 を実装していきます!
ぜひ、引き続き一緒に脱出ゲームを作っていきましょう!
よくある質問(FAQ)
- Qアイテムを複数持たせるにはどうすればいいですか?
- A
ItemBox
のGameObject[] Boxs
に複数のアイテムスロットを用意し、それぞれのスロットにアイテムを対応させましょう。
- Qアイテムを取得したのにボックスに表示されません
- A
SetItem()
のBoxs[index].SetActive(true);
の処理が正しく動作しているか確認してください。また、Boxs
に正しいオブジェクトがアタッチされているかもチェックしましょう。
- Qアイテムを使ったら、再取得できるようにできますか?
- A
UseItem()
の処理を変更し、アイテムを非表示にせず再度SetActive(true)
にすることで可能です。