[Unityエディター拡張] 縦と横にフィールドを並べる

ヨメレバCSS
オリジナルCSS

こうHTMLのTABLEタグみたいに、縦とか横とかにフィールドを並べるようにします。

インスペクタは基本的に縦並びなのですが、横並びにしてから縦並び、みたいなことをするためにそれぞれ用意されています。

フィールドを横に並べる

横に並べるには、対象を BeginHorizontalとEndHorizontalで囲みます。

普通においたら、縦に並んでいるものを、

EditorGUILayoutSample obj = target as EditorGUILayoutSample;
obj.name = EditorGUILayout.TextField ("name", obj.name);
obj.address = EditorGUILayout.TextField ("address", obj.address);
obj.intValue = EditorGUILayout.IntField ("intValue", obj.intValue);
obj.floatValue = EditorGUILayout.FloatField ("floatValue", obj.floatValue);

2_11_beginhorizontal

次のようにすると、横に並ぶようになります。

EditorGUILayoutSample obj = target as EditorGUILayoutSample;

EditorGUILayout.BeginHorizontal ();
obj.name = EditorGUILayout.TextField ("name", obj.name);
obj.address = EditorGUILayout.TextField ("address", obj.address);
EditorGUILayout.EndHorizontal ();

EditorGUILayout.BeginHorizontal ();
obj.intValue = EditorGUILayout.IntField ("intValue", obj.intValue);
obj.floatValue = EditorGUILayout.FloatField ("floatValue", obj.floatValue);
EditorGUILayout.EndHorizontal ();

2_11_beginhorizontal2

BeginHorizontal~EndHorizontalで囲まれたフィールドが、横に並んでいます。

フィールドを縦に並べる

縦に並べるにはBeginVerticalを使用します。

が、インスペクタはデフォルトでフィールドは縦に並んでいくので、最初にBeginVertical~EndVerticalで囲んでも何もおこりません。

BeginHorizontalを使用した後に、この指定が効果を発揮します。

EditorGUILayoutSample obj = target as EditorGUILayoutSample;
EditorGUILayout.BeginHorizontal ();

	EditorGUILayout.BeginVertical ();
	obj.name = EditorGUILayout.TextField ("name", obj.name);
	obj.address = EditorGUILayout.TextField ("address", obj.address);
	EditorGUILayout.EndVertical ();

	EditorGUILayout.BeginVertical ();
	obj.intValue = EditorGUILayout.IntField ("intValue", obj.intValue);
	obj.floatValue = EditorGUILayout.FloatField ("floatValue", obj.floatValue);
	EditorGUILayout.EndVertical ();

EditorGUILayout.EndHorizontal ();

というふうに、BeginHorizontal~EndHorizontalで囲まれた中に、BeginVertical~EndVerticalをおいてやると、

2_11_beginvertical

囲まれたフィールドが縦に並び、それが横に並んでいる表示になります。

スポンサーリンク
GoogleAdSence レクタングル(大)