代码之家  ›  专栏  ›  技术社区  ›  Daniel Lip

如何在编辑器窗口中将字段与线条中心对齐?

  •  0
  • Daniel Lip  · 技术社区  · 4 年前
    EditorGUILayout.BeginHorizontal();
    allChildren[i] = EditorGUILayout.ObjectField(allChildren[i], typeof(Transform), true) as Transform;
    EditorGUILayout.LabelField(names[i]);
    EditorGUILayout.EndHorizontal();
    

    使用开始/结束水平使标签位于objectfield的右侧。

    Labels on the right size

    但现在我希望每个objectfield及其附近的标签都与中心对齐。 因此,每个objectfield和lablefield将位于它们所在的行的中心。

    现在,它们都与左侧对齐。

    1 回复  |  直到 4 年前
        1
  •  1
  •   hijinxbassist    4 年前

    您可以使用 FlexibleSpace 元素之间填充元素未占用的空间。

    EditorGUILayout.BeginHorizontal();
    {
        GUILayout.FlexibleSpace(); // Fill Space Beginning
    
        allChildren[i] = EditorGUILayout.ObjectField(allChildren[i], typeof(Transform), true) as Transform;
    
        GUILayout.FlexibleSpace(); // Fill Space Middle
    
        GUILayout.Label(names[i]);
    
        GUILayout.FlexibleSpace(); // Fill Space End
    }
    EditorGUILayout.EndHorizontal();
    

    它似乎不适用于 EditorGUILayout.LabelField ,以上使用替换 GUILayout.Label

    如果希望标签位于右半部,对象字段位于左半部(完全均匀),则需要设置每个字段的显式大小(两者相等),以便正确居中。

    您使用的所有元素都有 params GUILayoutOption[] 这就是指定元素宽度的方式。例如:。

    GUILayout.Label(names[i], GUILayout.Width(150));