インスペクター拡張用の属性について

ここではインスペクター上の表示を拡張する属性(Attribute)について説明します。


※この記事で使用しているUnityのバージョン:Unity2019.1

属性とは?

C#でいうところの属性とは、クラスやフィールドなどに追加の情報を与えるものです。

例えば、「インスペクターに変数を表示させる方法」で紹介した[SerializeField]も属性の一つで、

[SerializeField]
string serializedText = "これはシリアライズされる文字列です。";

と書くことでprivateな変数でも値をシリアライズする(≒インスペクターに表示させる)ことができます。Unityではこのようにインスペクター上に変数を表示・非表示したり表示方法を変えたりするための属性がいくつか用意されています。

これらをうまく使いこなせるようになると、インスペクターから値を変更するときにとても便利になるのでぜひ覚えておきましょう。

インスペクターを拡張する属性

それではインスペクター上での表示を変更する属性を見ていきましょう。すでに紹介したもの以外で主な属性は次の通りです。

属性 機能
Header 見出しを表示
Tooltip カーソルを合わせたときにヒントを表示
Range スライダーを表示
Multiline 複数行入力可能なテキストボックスを表示
TextArea スクロールバー付きのテキストボックスを表示
Space フィールドの間を空ける

Header

見出しを表示する属性です。フィールドがずらっと並んでいるだけだと見づらいのですが、これでまとまりごとに見出しを設定するとかなり見やすくなります。

[Header("テスト見出し1")]

Tooltip

カーソルをフィールド名の上に合わせたときにツールチップを表示する属性です。フィールドの説明を表示させたいときに使います。

[Tooltip("これはツールチップのテストです。")]

Range

Range属性によるスライダー

スライダーを表示し、入力できる値の上限・下限を指定することができる属性です。

[Range(0, 10)]
public int range = 0;

Multiline

Multiline属性によるテキストボックス

複数行入力できるテキストボックスを表示する属性です。

[Multiline]
public string text1;

TextArea

TextArea属性によるテキストボックス

スクロールバー付きのテキストボックスを表示する属性です。

[TextArea]
public string text2;

Space

フィールドとフィールドのあいだの間隔をあける属性です。

[Space]