Unity Editor GUI 自适应区域框:包裹自定义 Toggle 和 Text

在 Unity 编辑器中,您可能需要创建一些自定义的界面,例如包含一些 Toggle 和 Text 的区域框。为了使这些区域框能够自适应其内容,您可以使用 GUILayout.BeginAreaGUILayout.EndArea 来创建自适应的区域框。

示例代码

以下是一个示例代码,演示如何在 Unity Editor GUI 中创建一个自适应的区域框,并包含自定义的 Toggle 和 Text 控件:

public class MyEditorWindow : EditorWindow
{
    private Rect areaRect = new Rect(10, 10, 200, 100);
    private bool toggle1 = false;
    private bool toggle2 = false;
    private string text = 'Hello World';

    void OnGUI()
    {
        GUILayout.BeginArea(areaRect, GUI.skin.box);
        GUILayout.Label('Title', EditorStyles.boldLabel);
        toggle1 = GUILayout.Toggle(toggle1, 'Toggle 1');
        toggle2 = GUILayout.Toggle(toggle2, 'Toggle 2');
        text = GUILayout.TextField(text);
        GUILayout.EndArea();

        // 自适应区域框的位置和大小
        areaRect.width = GUILayoutUtility.GetLastRect().width + 20;
        areaRect.height = GUILayoutUtility.GetLastRect().height + 20;
    }
}

代码解析

  1. 创建区域框: 使用 GUILayout.BeginArea 创建一个区域框,并使用 GUI.skin.box 样式来显示边框。
  2. 添加控件: 在区域框中添加一些自定义的控件,例如 GUILayout.ToggleGUILayout.TextField
  3. 自适应尺寸:GUILayout.EndArea 之后,使用 GUILayoutUtility.GetLastRect() 获取最后一个控件的位置和大小,并调整 areaRect 的宽高,使其能够自适应所有内容。

总结

通过使用 GUILayout.BeginAreaGUILayout.EndArea,您可以轻松地创建自适应的区域框,并包含您需要的任何自定义控件。通过获取控件的位置和大小,您可以使区域框始终能够自适应内容,并提供最佳的用户体验。


原文地址: https://www.cveoy.top/t/topic/oM3Q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录