【Unity】Inspectorウィンドウでの表示に関わるAttributeのまとめ
Inspectorウィンドウへの表示に関係するUnityのAttributeをまとめています。このブログではこれらのAttributeについて詳細記事を作成しているので、使い方を掴むのにも使えます。
あなたのゲームをいち早く完成させるための研究所
Inspectorウィンドウへの表示に関係するUnityのAttributeをまとめています。このブログではこれらのAttributeについて詳細記事を作成しているので、使い方を掴むのにも使えます。
HelpURLAttributeを使うことでInspectorウィンドウからヘルプページに飛ばすことができます。1クラスにつき1つのURLを指定できるので、自作クラスのリファレンスページに飛ぶようにすれば、コードを触らない人にもフィールドやメソッドの役割を伝えることができます。
Inspectorウィンドウに表示するフィールドはToolTipAttributeを使ってヒントメッセージを表示すると親切です。カーソルを合わせるだけでメッセージを表示できるので、Inspectorウィンドウ内のスペースも取らなくて便利。チーム内の意思伝達のおともにぜひ。
複数行テキストを扱うなら、[Multiline]もいいけど[TextArea]を使うと便利です。何よりスクロールバーを使えるのがありがたい。テキストエリアの内容確認ならスクロールバーがあった方が何かと扱いやすいです。
Inspectorウィンドウで複数行テキストエリアを表示したい場合は[Multiline]のAttributeを使います。長文を書く場合には通常のテキストフィールドだと狭いため、ある程度大きい複数行テキストエリアにしておくと編集しやすいです。
SpaceAttributeはInspectorウィンドウで余白を表示することができるAttributeです。関連性のあるフィールドをまとめて表示すれば、どこを触ったらいいのか分かりやすくなります。HeaderAttrubuteと組み合わせればより効果的。
HeaderAttributeを使って、Inspectorウィンドウに表示されるフィールドを整理して表示できます。RPG系のゲームではテストプレイ中にパラメータをいじることも多いと思うので、Headerをうまく使って整理しておくと、操作するべきフィールドがすぐに見つかるはず。
[DisallowMultipleComponent]のAttributeを使うことで、同一のゲームオブジェクトに、同じスクリプトまたはコンポーネントを複数アタッチできないようにします。1行追加するだけで実現できるので、Manager系のクラスには付けておくと安心かも。
アタッチしてないコンポーネントをスクリプトから操作しちゃうこと、よくありませんか? うっかりGetComponentしてエラーを出しちゃう……そんな時には、RequireComponentのAttributeを付けておくのがオススメ! スクリプトをアタッチするときにコンポーネントも一緒にアタッチしてくれるので、うっかりさんも安心です(通販風)
Unityではメンバ変数(フィールド)にRangeAttributeを指定しておくと、Inspectorウィンドウでスライダーを使って値を調整できるようになります。最大値と最小値を指定するため、Inspectorでの操作で変な値が入ることも少なくなり、スライダーの移動量で大体の値を掴むこともできます。
Unityでスクリプトを作成する際はクラスやフィールド、メソッドなどにAttirbuteを指定することができます。その中で、privateでもシリアライズする[SerializeField]と、publicであってもシリアライズさせない[System.NonSerialized]がありますが、どちらが優先されるのか確認を行なっています。
publicのフィールドや[SerializeField]をつけたフィールドはシリアライズの対象となり、Inspectorウィンドウに表示されるようになります。今回扱う[HideInInspector]を使うと、シリアライズの対象フィールドでもInspectorウィンドウで非表示にすることができます。
スクリプトを書く時に悩む、Inspectorに表示したいフィールドの公開方法。publicなら簡単だけど他のスクリプトからアクセスできちゃうし、[SerializeField]でInspectorに表示するのが無難かなーなんて思いつつ、2つの方法の使い分けを記載。
作成したスクリプトはコンポーネントメニューからアタッチすることができますが、デフォルトだと『Scripts』の下にずらっと並びます。AddComponentMenuのAttributeをクラス名の前につけることで、コンポーネントメニュー内のパスを指定することができるため、これを試してみます。