MRが楽しい

MRやVRについて学習したことを書き残す

UnityのInspectorビューで自作クラスのリストの見出しを表示する

本日はUnityの小ネタ枠です。
UnityのInspectorビューで自作クラスのリストの見出しを表示する小ネタを記事にします。

自作クラスのリストの見出しを表示する

Inspectorビューで自作クラスのリストの見出しを表示するには自作クラスの先頭の変数をstring型になるように作成します。
例えば以下の2つのクラスのリストをInspectorに表示すると、前者のクラスはName変数の値が見出しとして表示されます。

[Serializable]
public class HeadingElement
{
    // 先頭にstring型のフィールドを定義すると見出しになる
    public string Name;
    public int Age;
}
[Serializable]
public class NoHeadingElement
{
    public int Age;
    public string Name;
}

以下にInspectorビューの動作を確認するためのサンプルスクリプトを作成しました。
・ElementTest.cs

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ElementTest : MonoBehaviour
{
    [Header("見出しありリスト")]
    [SerializeField]
    private List<HeadingElement> headingList = new();
    
    [Header("見出しなしリスト")]
    [SerializeField]
    private List<NoHeadingElement> noHeadingList = new();
}

/// <summary>
/// 見出し表示されるクラス
/// </summary>
[Serializable]
public class HeadingElement
{
    // 先頭にstring型のフィールドを定義すると見出しになる
    public string Name;
    public int Age;
}

/// <summary>
/// 見出し表示されないクラス
/// </summary>
[Serializable]
public class NoHeadingElement
{
    public int Age;
    public string Name;
}

リストを初期化した段階ではどちらのリストもElement~でリストの見出しが表示されます。

各要素に値を代入した結果は以下の通りです。
前者のクラスではName変数に設定した文字列がリストの見出しに表示されるようになりました。