如何对齐 GUILayout 元素
How to align GUILayout elements
我正在努力改进转换检查器,但目前卡住了。
有没有办法将这些按钮右对齐?
这些只是包裹在水平组内的两个 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();
}
如何将它们放在右边?
您可以通过在按钮前面添加灵活的 space 将按钮移动到右侧:
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();
}
灵活的 space 简单地吃掉布局组中剩余的 space。如果您有多个灵活的 space,则 space 在它们之间平均分配。
您可能会在我的 IMGUI crash course 中找到更多详细信息。
作为 的替代方案,如果您希望将按钮与其他字段的左端对齐,您只需插入一个与前缀大小相同的 space标签:
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();
}
我正在努力改进转换检查器,但目前卡住了。
有没有办法将这些按钮右对齐?
这些只是包裹在水平组内的两个 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();
}
如何将它们放在右边?
您可以通过在按钮前面添加灵活的 space 将按钮移动到右侧:
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();
}
灵活的 space 简单地吃掉布局组中剩余的 space。如果您有多个灵活的 space,则 space 在它们之间平均分配。
您可能会在我的 IMGUI crash course 中找到更多详细信息。
作为
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();
}