LoginSignup
4
5

More than 5 years have passed since last update.

InspectorのVector3表示を改善するAttribute作った

Last updated at Posted at 2013-02-02

前提

UnityでVector3をInspectorで表示すると、ちょう縦幅を使ってて、だるい。

 

Unity3.x系だと、ここではEditorのみを書かなきゃいけなかったけど、
Unity4.x系からAttributeを自作すればInspectorの表示を自分で編集できる様になった。

Editorっていうと、特定の開発環境専用のツールのイメージがあったけど、
Attributeはもっと汎用的な、「UnityのInspectorってこうだったらいいよね」を拡張するのに特化した感じ。

個人的な感想だし、上手く表現出来ないけど。

   

Attributeとは?

ちなみにAttributeって何?って時の為に、
4.x系から追加されているRangeAttributeなどがある。
値の範囲をInspector側にも制限出来るので便利。

 

hoge.cs
[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で表示されるのは、labelVector3の2行分になります。

そのため、一工夫しないと以下の様な表示になってしまいます。

 

1行以上の表示になりうる値を表示したい時は、
PropertyDrawerGetPropertyHeightから表示領域の調整を行う必要があります。

hoge.cs
public override float GetPropertyHeight (SerializedProperty property, GUIContent label)
{
   return base.GetPropertyHeight (property, label) + 30;
}

 

このように、デフォルトの表示領域が一行分になっているので、
表示領域の高さに+30とかしてやれば、ちょうど良い感じになりました。

 
Attributeおもしろいし、便利!

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5