中級編
練習問題⑤: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が整理されてとても見やすくなると思います!他にもゲーム開発に役立つ様々な機能があるので、調べてみて下さい!
私はまずこれらの基本的な機能から使っていき、今後便利だなと思った機能があれば紹介していきたいと思います!
コメント