UnityでInspectorからデータを作る(ListとSerializableの基本)
Unityで開発していると、
「データをコードに書くべきか?」
「Inspectorで設定すべきか?」
という場面に必ず出てきます。
今回は、Inspectorでデータを作り、それをスクリプトで使う方法を、シンプルな例で解説します。
完成イメージ
今回の仕組みでは、Inspectorに以下のようなデータを登録できます。
- りんご / 3
- ばなな / 5
そして実行すると、
りんご
3
とConsoleに表示されます。
サンプルシーン

サンプルコード
using System;
using System.Collections.Generic;
using UnityEngine;
public class ItemList : MonoBehaviour
{
public List<Item> ItemLists;
private void Start()
{
Debug.Log(ItemLists[0].Name);
Debug.Log(ItemLists[0].Number);
}
[Serializable]
public class Item
{
public string Name;
public int Number;
}
}
このコードでやっていること
Listで複数のデータを管理
public List<Item> ItemLists;
Itemというデータのまとまりを、複数持てるようにしています。
クラスで「データの型」を作る
public class Item
{
public string Name;
public int Number;
}
これは「1つのアイテムの設計図」です。
SerializableでInspectorに表示する
[Serializable]
これを付けることで、
→ Unityが「このクラスは保存・表示していいデータ」と認識します
Inspectorでの操作
- 「+」ボタンで要素を追加
- NameとNumberを入力
これだけで、プログラムに渡すデータが完成します。
なぜこの方法を使うのか
もしコードで書くとこうなります。
ItemLists = new List<Item>()
{
new Item { Name = "りんご", Number = 3 },
new Item { Name = "ばなな", Number = 5 }
};
一見問題なさそうですが、
- 修正のたびにコードを書き直す
- 実行しないと変更が確認できない
- デザイナーが触れない
というデメリットがあります。
Inspector方式のメリット
実行前にデータを変更できる
数値や名前を変えてすぐ試せます。
コードを書かずに編集できる
非エンジニアでも扱えるようになります。
データと処理が分離される
設計としてとても重要な考え方です。
よくあるミス
Serializableを付け忘れる
→ Inspectorに表示されません
要素が0件のまま使う
ItemLists[0]
→ エラーになります
安全な書き方
private void Start()
{
if (ItemLists != null && ItemLists.Count > 0)
{
Debug.Log(ItemLists[0].Name);
Debug.Log(ItemLists[0].Number);
}
}
イメージで理解する
この仕組みはこう考えると分かりやすいです。
- Item → 商品1つ
- List → 商品リスト
- Inspector → 商品登録画面
- Start() → 商品を使う処理
ここが理解できれば次に進める
この考え方はそのまま発展できます。
- インベントリシステム
- 敵データ管理
- 会話データ
- ステージ設定
授業での一言
「データはコードで書くのではなく、Inspectorで作る」
まとめ
- Listで複数データを持つ
- クラスでデータの形を作る
- SerializableでInspectorに表示
- Inspectorで自由に編集
この流れがUnityの基本です。
必要であれば、この続きとして
- foreachで全件表示
- ボタンで追加・削除
- ScriptableObject版
までつなげた教材も作れます。



ディスカッション
コメント一覧
まだ、コメントがありません