【问题标题】:How to align GUILayout elements如何对齐 GUILayout 元素
【发布时间】:2021-01-03 19:28:44
【问题描述】:

我正在稍微改进一下转换检查器,但目前卡住了。

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

这些只是包裹在水平组内的两个 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# unity3d layout alignment editor


    【解决方案1】:

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

    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 crash course 中找到更多详细信息。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2015-05-24
        • 2011-12-03
        • 2012-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-15
        • 1970-01-01
        相关资源
        最近更新 更多