Search code examples
c#unity-game-enginelayoutalignmenteditor

How to align GUILayout elements


I am working on improving a transform inspector a bit and currently got stuck.

Is there a way to align these buttons to the right?

enter image description here

These are just two GUILayout buttons wrapped inside the horizontal group.

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();
}

How can I position them to the right?


Solution

  • You can move your buttons to the right side by adding a flexible space in front of them:

    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();
    }
    

    A flexible space simply eats all left over space within a layout group. If you have multiple flexible spaces, the space is equally distributed between them.

    You might find some more details in my IMGUI crash course.