Unityでスクリプトを書くと、インスペクター上に変数がずらっと並びがち。
ゲームバランス調整やデザイナーとの連携を考えると、「どの変数が何のためのものか?」が一目で分かるようにしたいですよね。
この記事では、インスペクター上にヘッダー・説明文・区切りなどを追加する便利な属性(Attribute)を、コピペOKで一挙に紹介します!
この記事で分かること
- Unityのインスペクターを見やすくする標準の属性
- タイトル表示や説明文の挿入方法
- 実行中に変更不可にする「読み取り専用属性」の作成方法
- 整理されたインスペクターで開発効率UP!
[Header(“タイトル”)]|区切りタイトルを表示
- インスペクター上に太字で目立つタイトルを表示
- 関連変数をまとめるのに便利
[Header("プレイヤーの基本情報")]
public float moveSpeed;
public int maxHP;
[T
ooltip(“説明文”)]|マウスオーバーで説明を表示
- インスペクターで変数にマウスを当てると吹き出し表示される
- デザイナーや他の開発者への配慮に◎
[Tooltip("移動速度。単位はm/s")]
public float moveSpeed;
[Space(n)]|余白で視覚的にブロック分け
- 変数間にスペース(ピクセル単位)を追加
- ごちゃついたインスペクターの視認性向上に
public int score;
[Space(10)]
public int life;
[TextArea]|複数行テキストを扱いたいときに
- 複数行の文字列入力フィールドを生成
- セリフ、メモ、ログなどに最適
[TextArea]
public string developerMemo;
【応用】読み取り専用フィールドを作る(独自属性)
Unityには readonly をインスペクター上で表現する標準機能がありませんが、
カスタム属性を使えば簡単に実現できます!
Step1:ReadOnlyAttribute.cs(属性クラス)
using UnityEngine;
public class ReadOnlyAttribute : PropertyAttribute { }
Step2:ReadOnlyDrawer.cs(表示制御)
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
[CustomPropertyDrawer(typeof(ReadOnlyAttribute))]
public class ReadOnlyDrawer : PropertyDrawer
{
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
GUI.enabled = false;
EditorGUI.PropertyField(position, property, label, true);
GUI.enabled = true;
}
}
#endif
Step3:使い方(ReadOnlyを付けるだけ)
- エディタ上で値は見えるが編集不可
- 実行中に変化を見せたいときや、デバッグ用途に便利
[ReadOnly]
public int debugCount;
整ったインスペクターはメリットだらけ
項目 | 効果 |
---|---|
Header / Space | 視覚的な区切りで分類しやすくなる |
Tooltip | 他の人が読んでも意味が伝わる |
TextArea | 長文を入力する用途に便利 |
ReadOnly | デバッグ用変数を誤って変更する事故を防止 |
まとめ
ポイント | 内容 |
---|---|
Unity標準属性だけでもインスペクターを見やすくできる | |
説明やタイトルは [Header] や [Tooltip] で簡単に導入可能 | |
読み取り専用はカスタム属性で実現 | |
整ったUIはチーム開発・デバッグ効率を大きく改善する |
コピペOKなこの属性たちであなたのインスペクターをもっと分かりやすく整えていきましょう!