【Unity6】2D脱出ゲームの作り方⑦|アイテムボックスを管理するスクリプトを作る

取得できるアイテムを画面内に配置 ゲームの作り方

🎮 Unity6 を使った「1シーン完結型 2D脱出ゲーム講座」第7回 です。

前回の記事では、UI上に配置するアイテムスロットを作成しました。
今回は、そのスロットにアイテム情報を渡すための ItemBoxManager(アイテムボックス管理スクリプト) を作成し、
実際に画面上のアイテムをクリックして取得できるようにします。

アイテム管理スクリプト(ItemBoxManager)

アイテムの追加・削除や、スロットへの表示管理を行うスクリプトを作ります。

ItemBoxManager.cs

using UnityEngine;
using System.Collections.Generic;

public class ItemBoxManager :MonoBehaviour
{
public static ItemBoxManager Instance;
public ItemSlot[] slots;  // 画面に配置したスロット

// 取得中アイテムを保持するリスト
private List<ItemData> items = new List<ItemData>();

private void Awake()
{
if (Instance == null) Instance = this;
else Destroy(gameObject);
}

private void Start()
{
 // 開始時に全スロットを初期化
foreach (var slot in slots)
{
slot.ClearItem();
}
}

public void AddItem(ItemData item) // アイテム追加
{
items.Add(item);

foreach (var slot in slots)
{
if (slot.iconImage.enabled == false) // 空きスロットを探す
 {
  slot.SetItem(item);
  return;
 }
}
  Debug.Log(“スロットがいっぱいです!”);
}
}

インスペクター設定(ItemBox)

  1. ItemBox(空のオブジェクト)に ItemBoxManager をアタッチ
  2. Slots のサイズを 5 などに設定
  3. ヒエラルキー上の Slot0〜Slot4 を順番にアタッチ

これで UI 上のスロットがスクリプトと連動します。

クリックで取得できるアイテムの作成

脱出ゲーム内の「拾えるアイテム」を UI イメージとして配置し、
クリックしたらアイテムボックスへ自動で追加されるようにします。

画像オブジェクトの配置

  • 背景の上に UI → Image を追加
  • アイテム画像(例:蛇口ハンドル)を割り当て
  • 背景に自然に馴染むよう位置とサイズを調整
【Unity6】2D脱出ゲームの作り方⑦|ゲーム画面に取得できるアイテム「蛇口ハンドル」を配置した画像

ItemPickup.sc

using UnityEngine;

public class ItemPickup : MonoBehaviour
{
public ItemData itemData; // アタッチする ScriptableObject

public void OnClick()
{
ItemBoxManager.Instance.AddItem(itemData); // アイテムボックスに追加
gameObject.SetActive(false);         // 画面から消す
}
}

インスペクター設定(取得アイテム)

  • アイテム画像オブジェクトに ItemPickup をアタッチ
  • ItemData に対応する ScriptableObject を割り当て
  • Button コンポーネントを追加し、
     OnClick に自分自身の ItemPickup → OnClick() を登録

これでクリックでアイテムが取得できるようになります。

アイテム取得の流れ

  1. アイテム画像をクリックItemPickup.OnClick()
  2. ItemBoxManager にアイテムを追加
  3. 空いているスロットに表示ItemSlot.SetItem()

🎥今回の動作例はこちら

まとめ

今回は、脱出ゲームに欠かせない アイテムボックスの管理スクリプト と、
画面上のアイテムを クリックで取得できる仕組み を実装しました。

  • ItemBoxManager でスロット管理
  • ItemPickup で取得処理
  • ScriptableObject の ItemData と連携してアイテムを柔軟に追加

✅次回は、スロットをクリックしたときの選択枠の切り替え
アイテムの詳細画面の表示方法 を解説します。

コメント

タイトルとURLをコピーしました