我正在努力改进变换检查器,但目前陷入困境。
有没有办法将这些按钮向右对齐?
这些只是水平组内包裹的两个 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();
}
如何将它们放置在右侧?
您可以通过在按钮前面添加灵活的空间将按钮移动到右侧:
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 速成课程中找到更多详细信息。
作为 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();
}