【Unity】Odin InspectorのHorizontalGroup機能を使って、インスペクターのパラメータを横並びにする。

概要

インスペクターのパラメータを横並びにするというものです。Unity標準でありそうでない機能なんですよね。

ちなみに普通は縦に並びます。

使い方

[HorizontalGroup("グループ名")] をまとめたい変数につけてください。

using Sirenix.OdinInspector;
~~~~~~~省略~~~~~~~~

    [HorizontalGroup("Hoge")]
    public int left;

    [HorizontalGroup("Hoge")]
    public int center;

    [HorizontalGroup("Hoge")]
    public int right;

そうすると・・・横に並んだのですが見切れちゃってますね。

これはラベル幅のデフォルト値がめちゃくちゃでかいからです。

ラベル幅を調整していきます。

LabelWidth で調整します。 これはLeft, Centerといった文字の横幅を変えることができます。単位はピクセルです。

文字の長さによって適宜調整してください。

    [HorizontalGroup("Hoge", LabelWidth =40)]
    public int left;

    [HorizontalGroup("Hoge")]
    public int center;

    [HorizontalGroup("Hoge")]
    public int right;

結構いい感じになりました。

他Groupと併用する時は注意(階層規約がある!)

他のGroupと併用したときに注意点があります。

例えば以下のBoxGroupとHorizontalGroupを組み合わせた場合表示がバグります。

    [BoxGroup("Box", LabelWidth =40)]
    [HorizontalGroup("Hoge")]
    public int left;

    [BoxGroup("Box")]
    [HorizontalGroup("Hoge")]
    public int center;

    [BoxGroup("Box")]
    [HorizontalGroup("Hoge")]
    public int right;

↓↓ 同じパラメータが2重で表示されています。

BoxGroupの中にHorizontalGroupを使う時は、

親グループ名/HorizontalGroup名 というグループ名にします。

    [BoxGroup("Box")]
    [HorizontalGroup("Box/Hoge", LabelWidth =40)]
    public int left;

    [BoxGroup("Box")]
    [HorizontalGroup("Box/Hoge")]
    public int center;

    [BoxGroup("Box")]
    [HorizontalGroup("Box/Hoge")]
    public int right;

これで表示するとちゃんとBoxGroupの中にHorizotalGroupを表示することができました。