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での操作

  1. 「+」ボタンで要素を追加
  2. 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版

までつなげた教材も作れます。

訪問数 10 回, 今日の訪問数 10回

広告

Unity

Posted by hidepon