lime雑記

ゲーム開発、その他雑記。

【Unity】Odinを使用してクラスをSerializeした際のInspectorを見やすくする

この記事でのバージョン

Unity 2021.3.11f1
Odin Inspector and Serializer 3.1.6

概要

自作クラスに対してSerializeFieldを付けた際、Inspector側はこうなると思います。

この状態だと少し見づらいときに、以下のようにするサンプルです。

コード

[Serializable]
[HideLabel]
public class EnemyParameter {
  [SerializeField, LabelText("HP")]
  private int _hp;
  [SerializeField, LabelText("攻撃力")]
  private int _attackPower;
  [SerializeField, LabelText("防御力")]
  private int _defensivePower;
}

[CreateAssetMenu(fileName = "EnemyTable", menuName = "EnemyTable", order = 0)]
public class EnemyTable : ScriptableObject {
  [SerializeField, Title("敵1")]
  private EnemyParameter _enemyParameter01;
  [SerializeField, Title("敵2")]
  private EnemyParameter _enemyParameter02;
  [SerializeField, Title("敵3")]
  private EnemyParameter _enemyParameter03;
}

シリアライズ対象のクラスにHideLabelを付け、シリアライズする側でLabelTextの代わりにTitleを使用します。

HideLabelの部分にIndentを追加すると一律でIndentさせることも可能です。

[Serializable]
[HideLabel]
[Indent]
public class EnemyParameter {
  [SerializeField, LabelText("HP")]
  private int _hp;
  [SerializeField, LabelText("攻撃力")]
  private int _attackPower;
  [SerializeField, LabelText("防御力")]
  private int _defensivePower;
}