如何对齐 GUILayout 元素

问题描述 投票:0回答:2

我正在努力改进变换检查器,但目前陷入困境。

有没有办法将这些按钮向右对齐?

这些只是水平组内包裹的两个 GUILayout 按钮。

public override void OnInspectorGUI()
{
    EditorGUILayout.BeginHorizontal();
    GUILayout.Button("World", EditorStyles.miniButtonLeft, GUILayout.Width(85));
    GUILayout.Button("Local", EditorStyles.miniButtonRight, GUILayout.Width(85));
    EditorGUILayout.EndHorizontal();

    defaultEditor.OnInspectorGUI();
}

如何将它们放置在右侧?

c# unity-game-engine layout alignment editor
2个回答
7
投票

您可以通过在按钮前面添加灵活的空间将按钮移动到右侧:

public override void OnInspectorGUI()
{
    EditorGUILayout.BeginHorizontal();
    GUILayout.FlexibleSpace();
    GUILayout.Button("World", EditorStyles.miniButtonLeft, GUILayout.Width(85));
    GUILayout.Button("Local", EditorStyles.miniButtonRight, GUILayout.Width(85));
    EditorGUILayout.EndHorizontal();

    defaultEditor.OnInspectorGUI();
}

灵活的空间会简单地吃掉布局组中所有剩余的空间。如果您有多个灵活空间,则空间在它们之间平均分配。

您可能会在这个 IMGUI 速成课程中找到更多详细信息。


1
投票

作为 Bunny83 的答案的替代方案,如果您希望将按钮与其他字段的左端对齐,您只需插入一个与前缀标签大小相同的空格即可:

public override void OnInspectorGUI()
{
    EditorGUILayout.BeginHorizontal();
    {
        GUILayout.Space(EditorGUIUtility.labelWidth);

        if(GUILayout.Button("World", EditorStyles.miniButtonLeft))
        {
            ...
        }

        if(GUILayout.Button("Local", EditorStyles.miniButtonRight))
        {
            ...
        }
    }
    EditorGUILayout.EndHorizontal();

    defaultEditor.OnInspectorGUI();
}
© www.soinside.com 2019 - 2024. All rights reserved.