基本布局系统(水平与垂直布局)
用途:控制UI元素排列
核心类:GUILayout
调用位置:OnInspectorGUI()
布局容器:
GUILayout.BeginHorizontal(); // 开始水平布局
GUILayout.BeginVertical(); // 开始垂直布局
// ... UI元素 ...
GUILayout.EndHorizontal(); // 必须成对结束
GUILayout.EndVertical();
经典嵌套布局:
GUILayout.BeginHorizontal();
GUILayout.BeginVertical();
GUILayout.Button("左列按钮1");
GUILayout.Button("左列按钮2");
GUILayout.EndVertical();
GUILayout.BeginVertical();
GUILayout.Button("右列按钮1");
GUILayout.Button("右列按钮2");
GUILayout.EndVertical();
GUILayout.EndHorizontal();
黄金法则:
Begin/End必须严格配对
嵌套不得超过8层(Unity限制)
垂直和水平布局可自由组合
示例代码和效果图
using UnityEngine;
using UnityEditor;
/// <summary>
/// 创建自定义编辑器,作用于Example组件
/// </summary>
[CustomEditor(typeof(Example))]
public class ExampleEditor : Editor
{
// ================= 核心方法 - 绘制编辑器界面 =================
public override void OnInspectorGUI()
{
// 1. 先绘制默认Inspector内容
base.OnInspectorGUI();
// 2. 依次绘制各种自定义控件
Layout(); // 基本布局示例
}
// ================= 8. 基本布局示例 =================
private void Layout()
{
// 主水平布局
GUILayout.BeginHorizontal();
// 左侧垂直布局
GUILayout.BeginVertical();
GUILayout.Button("btn1");
GUILayout.Button("btn2");
GUILayout.EndVertical();
// 右侧垂直布局
GUILayout.BeginVertical();
GUILayout.Button("btn3");
GUILayout.Button("btn4");
GUILayout.EndVertical();
GUILayout.EndHorizontal(); // 结束主水平布局
}
}