[Unityエディター拡張] スクロールバーを表示する

ヨメレバCSS
オリジナルCSS

フィールドを並べていくときに、多くのフィールドをスクロールでまとめたい場合はBeginScrollView~EndScrollViewを使います。

EditorGUILayoutSample obj = target as EditorGUILayoutSample;
obj.scrollPosition = EditorGUILayout.BeginScrollView (obj.scrollPosition);
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);
obj.doubleValue = EditorGUILayout.DoubleField ("doubleValue", obj.doubleValue);
obj.boundsValue = EditorGUILayout.BoundsField ("boundsValue", obj.boundsValue);
EditorGUILayout.EndScrollView ();

とすると、

2_12_scrollview

こんな感じに。

デフォルトでは下がずいぶん空いてますね。

スクロールバーの位置は第一引数のVector2に記録されるので、それもちゃんと引き継いでいく必要があります。

obj.scrollPosition = EditorGUILayout.BeginScrollView (obj.scrollPosition, GUILayout.Width(200), GUILayout.Height(100));

というように、引数にGUILayout.WidthとGUILayout.Heightを指定してやると、スクロールビューの大きさを調整できます。

2_12_scrollview2

また、第二、第三引数にboolを指定してやると、常にスクロールバーを表示するようになります。

bool alwaysShowHorizontal = true;
bool alwaysShowVertical = true;
obj.scrollPosition = EditorGUILayout.BeginScrollView (obj.scrollPosition, alwaysShowHorizontal, alwaysShowVertical);

第二引数が横、第三引数が縦のバーですね。

2_12_scrollview3

どうもこの、幅と高さをインスペクタの自動調整にしている状態だと、フィールドとバーの幅が干渉してどちらかのバーを出すように指示すると両方ともバーがでるようになってしまうようなので、ちょっと高さを指定して見てみます。

bool alwaysShowHorizontal = false;
bool alwaysShowVertical = true;
obj.scrollPosition = EditorGUILayout.BeginScrollView (obj.scrollPosition, alwaysShowHorizontal, alwaysShowVertical, GUILayout.Height(100));

横のバーだけ消してみます。

2_12_scrollview4

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

シェアする

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