Отчасти разобрался со своим прошлыми вопросом.
Вот так все работает. Квадрат не уходит под полосу прокрутки, высотой не превышает 64 и размещен по средине, если меньше ширины окна.
GUILayout.BeginHorizontal();
{
GUILayout.FlexibleSpace();
Rect bigRect = GUILayoutUtility.GetAspectRect( items.Length, GUILayout.MaxWidth(64*items.Length) );
GUILayout.FlexibleSpace();
}
GUILayout.EndHorizontal();
Только не пойму как тут работает GUILayout.MaxWidth(64*items.Length) ?
Если без него, то FlexibleSpace сожмут квадрат с обеих сторон до нулевого размера.
Если бы MinWidth задавал, то понятно.