Чтобы последний EditorGUILayout из EditorWindow заполнил оставшееся пространство? - PullRequest
0 голосов
/ 05 февраля 2019

По умолчанию все группы EditorGUILayout.BeginHorizontal() и EditorGUILayout.BeginVertical() заполняют всю доступную родительскую ширину (или ширину EditorWindow).Даже просто вертикальные группы.Но в то же время height всегда равно 0 (если там нет элементов, иначе ширина будет равна общей высоте внутренних элементов).

Что нужно сделать, чтобы принудительно заполнить всю доступную или оставшуюся высотудля групп элементов?

Что нужно сделать, чтобы заполнить пространство равномерно?


Что у меня сейчас:

EditorGUILayout.BeginHorizontal(); {
//          EditorGUILayout.TextField("Label", "Text");
} EditorGUILayout.EndHorizontal();
 containerRect = GUILayoutUtility.GetLastRect();

var containerRectVertical = Rect.zero;
EditorGUILayout.BeginHorizontal(); {
    EditorGUILayout.BeginVertical(); {

    } EditorGUILayout.EndVertical();

    containerRectVertical = GUILayoutUtility.GetLastRect();         
} EditorGUILayout.EndHorizontal();  
var containerRect2 = GUILayoutUtility.GetLastRect();

Debug.Log($"winSize: {position.width}x{position.height}, horizSectonSize: {containerRect.width}x{containerRect.height}, 2: {containerRect2.width}x{containerRect2.height}" +
              $", containerRectVertical: {containerRectVertical.width}x{containerRectVertical.height}");

Вывод:

winSize: 446x192, horizSectonSize: 447x0, 2: 447x0, containerRectVertical: 447x0

Хотите:

winSize: 446x192, horizSectonSize: 447x96, 2: 447x96, containerRectVertical: 447x96

или

winSize: 446x192, horizSectonSize: 447x192, 2: 447x0, containerRectVertical: 447x192

1 Ответ

0 голосов
/ 05 февраля 2019

Использование

GUILayout.FlexibleSpace();

Например, с горизонтальной разметкой со следующим кодом

GUILayout.BeginHorizontal();
GUILayout.Label("left");
GUILayout.FlexibleSpace();
GUILayout.Label("right");
GUILayout.EndHorizontal();

вы получите это:

enter image description here

То же самое работает для вертикальных групп.

Также см. Более подробные параметры здесь: https://docs.unity3d.com/ScriptReference/GUILayoutOption.html

Доступные подсказки:

GUILayout.Width, GUILayout.Высота, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight.

Вы можете создать параметры GUILayoutOption [] один раз (при включении или отключении)с каждым редактором перекрасить, чтобы получить производительность

...