前提
UnityでVector3をInspectorで表示すると、ちょう縦幅を使ってて、だるい。
Unity3.x系だと、ここではEditorのみを書かなきゃいけなかったけど、
Unity4.x系からAttributeを自作すればInspectorの表示を自分で編集できる様になった。
Editorっていうと、特定の開発環境専用のツールのイメージがあったけど、
Attributeはもっと汎用的な、「UnityのInspectorってこうだったらいいよね」を拡張するのに特化した感じ。
個人的な感想だし、上手く表現出来ないけど。
Attributeとは?
ちなみにAttributeって何?って時の為に、
4.x系から追加されているRangeAttributeなどがある。
値の範囲をInspector側にも制限出来るので便利。
[RangeAttribute(0, 10.0f)]
public float duration = 1;
みたいな感じでfloatかintの上にAttribute付けてあげると
本題
ちなみに自作Attributeの作り方は、公式Blogで説明してるけど、
説明してるsampleがserverAdrressの為の正規表現で文字列制限Attributeなのだ。
Vector3の表示を変えるには、自作するしか無いのか!!!くそが
https://github.com/anchan828/property-drawer-collection/tree/master/Vector3FieldAttribute
@kyusyukeigoさんのご指導のおかげで、なんとかpull requestできました。
ありがとうございます!!!
このリポジトリには便利Attributeが他にもあるので有効活用したいです。
ハマりどころ
4時間くらい謎のエラーにハマっておりました。
Vector3Fieldで表示されるのは、label
とVector3
の2行分になります。
1行以上の表示になりうる値を表示したい時は、
PropertyDrawer
のGetPropertyHeight
から表示領域の調整を行う必要があります。
public override float GetPropertyHeight (SerializedProperty property, GUIContent label)
{
return base.GetPropertyHeight (property, label) + 30;
}
このように、デフォルトの表示領域が一行分になっているので、
表示領域の高さに+30
とかしてやれば、ちょうど良い感じになりました。
Attributeおもしろいし、便利!