【第一章编辑器开发基础第二节编辑器布局_3间距控制(4/4)】

间距控制

​​用途​​:精确控制UI元素间隔

​​核心类​​:GUILayout

​​调用位置​​:布局容器内

​​两种空间类型​​:

csharp 复制代码
// 1. 固定像素间距
GUILayout.Space(20f); // 20像素间隔

// 2. 弹性填充空间
GUILayout.FlexibleSpace();
​​经典布局应用​​:

// 左右按钮居中布局
GUILayout.BeginHorizontal();
GUILayout.FlexibleSpace(); // 左侧弹性空间
GUILayout.Button("确定");
GUILayout.Space(10);       // 固定间距
GUILayout.Button("取消");
GUILayout.FlexibleSpace(); // 右侧弹性空间
GUILayout.EndHorizontal();

// 底部按钮固定
GUILayout.BeginVertical();
// ... 主内容 ...
GUILayout.FlexibleSpace(); // 压到最下方
GUILayout.Button("提交");
GUILayout.EndVertical();

​​经验原则​​:

FlexibleSpace会占用所有可用空间

多个Space会线性累计

适用于按钮组对齐等精细布局

示例代码和效果图

csharp 复制代码
using UnityEngine;
using UnityEditor;

/// <summary>
/// 创建自定义编辑器,作用于Example组件
/// </summary>
[CustomEditor(typeof(Example))]
public class ExampleEditor : Editor
{
    

    // ================= 核心方法 - 绘制编辑器界面 =================
    public override void OnInspectorGUI()
    {
        // 1. 先绘制默认Inspector内容
        base.OnInspectorGUI();

        // 2. 依次绘制各种自定义控件
        Space();       // 间距控制

      
    }



    // ================= 10. 间距控制 =================
    private void Space()
    {
        // 水平布局中的固定间距
        GUILayout.BeginHorizontal();
        GUILayout.Button("btn1", GUILayout.Width(80f));
        GUILayout.Space(100f); // 100像素的水平间距
        GUILayout.Button("btn2", GUILayout.Width(80f));
        GUILayout.EndHorizontal();

        // 垂直布局中的弹性间距
        GUILayout.BeginVertical();
        GUILayout.Button("btn3", GUILayout.Width(80f)); // 顶部按钮

        /*
        弹性空间说明:
        1. btn3会固定在顶部
        2. FlexibleSpace会占据所有剩余垂直空间
        3. btn4会固定在底部
        */
        GUILayout.FlexibleSpace();

        GUILayout.Button("btn4", GUILayout.Width(80f)); // 底部按钮
        GUILayout.EndVertical();
    }
}
相关推荐
dswfgds14 小时前
开源项目吐槽大会:一篇技术文章的大纲设计
编辑器
golang学习记2 天前
VS Code Agents 新快捷键:一键穿梭主编辑器与Agent窗口
vscode·编辑器
FriendshipT2 天前
Vim 完整指南:从入门到高效编辑
linux·人工智能·编辑器·vim·1024程序员节
.道阻且长.2 天前
Linux 基本开发工具:编辑器vim,配置vim
linux·运维·服务器·职场和发展·编辑器·vim·1024程序员节
Rabitebla3 天前
【Linux底层原理】 工具篇(二):Vim 编辑器基础操作与简单配置
linux·c++·编辑器·vim
白鹭鸣鸣!4 天前
WSL2 + OpenCode 完整搭建全流程(含迁移 WSL 到 D 盘)
编辑器
骑着蜗牛撵大象3274 天前
四种库收进一个SQL编辑器(下):跨库取数、方言对齐与四库巡检的落地拆解
jvm·数据库·sql·编辑器·数据迁移·跨库查询
学习论之费曼学习法4 天前
无人值守AI内容矩阵实战(7):Playwright 发布器避坑——编辑器竞态、索引延迟与风控
python·线性代数·矩阵·编辑器·浏览器自动化·playwright·踩坑记录
心态还需努力呀4 天前
把 Zettlr 搬上鸿蒙 PC:墨匣学术写作编辑器移植与上架全记录
华为·编辑器·harmonyos
努力学习的小廉4 天前
UE5 入门系列(二):编辑器基础操作速通
ue5·编辑器