Odin Inspector 練習問題②

Unity

中級編

練習問題⑤:FoldoutGroup で折りたたみ表示

元のコード

using UnityEngine;

public class Character : MonoBehaviour
{
    public int hp;
    public int mp;
    public int strength;
    public int agility;
    public int intelligence;
}

目標

3つの FoldoutGroup に分ける

  • 基本ステータス:hp, mp
  • 攻撃ステータス:strength
  • 補助ステータス:agility, intelligence

正解例

using UnityEngine;
using Sirenix.OdinInspector;

public class Character : MonoBehaviour
{
    [FoldoutGroup("基本ステータス")]
    public int hp;

    [FoldoutGroup("基本ステータス")]
    public int mp;

    [FoldoutGroup("攻撃ステータス")]
    public int strength;

    [FoldoutGroup("補助ステータス")]
    public int agility;

    [FoldoutGroup("補助ステータス")]
    public int intelligence;
}

練習問題⑥:TabGroup でタブ切り替え

元のコード

using UnityEngine;

public class Monster : MonoBehaviour
{
    public string monsterName;
    public int level;

    public int hp;
    public int attack;
    public int defense;

    public float speed;
    public float vision;
}

目標

3つのタブに分ける

  • 基本情報:monsterName, level
  • 戦闘ステータス:hp, attack, defense
  • 行動特性:speed, vision

正解例

using UnityEngine;
using Sirenix.OdinInspector;

public class Monster : MonoBehaviour
{
    [TabGroup("基本情報")]
    public string monsterName;

    [TabGroup("基本情報")]
    public int level;

    [TabGroup("戦闘ステータス")]
    public int hp;

    [TabGroup("戦闘ステータス")]
    public int attack;

    [TabGroup("戦闘ステータス")]
    public int defense;

    [TabGroup("行動特性")]
    public float speed;

    [TabGroup("行動特性")]
    public float vision;
}

応用編

練習問題⑦:ScriptableObject でデータ管理ツール化

元のコード

using UnityEngine;

[CreateAssetMenu(fileName = "NewResidentData", menuName = "Game/ResidentData")]
public class ResidentData : ScriptableObject
{
    public string residentName;
    public int age;
    public int attackPower;
    public int defensePower;
}

目標

Odin属性を使って見やすく整理

  • 全てのパラメータ → BoxGroup「住民情報」
  • age → Rangeスライダーにする(1〜100)

正解例

using UnityEngine;
using Sirenix.OdinInspector;

[CreateAssetMenu(fileName = "NewResidentData", menuName = "Game/ResidentData")]
public class ResidentData : ScriptableObject
{
    [BoxGroup("住民情報")]
    public string residentName;

    [BoxGroup("住民情報")]
    [Range(1, 100)]
    public int age;

    [BoxGroup("住民情報")]
    public int attackPower;

    [BoxGroup("住民情報")]
    public int defensePower;
}

ポイントまとめ

[FoldoutGroup] → 折りたたみUI

[TabGroup] → タブUI

[BoxGroup] → まとまりで視覚整理

[Range] → スライダー化

ScriptableObject で 外部データ管理ツール に最適化!

まとめ

これを使えるだけでInspectorが整理されてとても見やすくなると思います!他にもゲーム開発に役立つ様々な機能があるので、調べてみて下さい!

私はまずこれらの基本的な機能から使っていき、今後便利だなと思った機能があれば紹介していきたいと思います!

コメント

タイトルとURLをコピーしました