【第零章编辑器开发与拓展】

发布于:2025-07-15 ⋅ 阅读:(16) ⋅ 点赞:(0)

前言:对编辑器拓展与开发可以节省很多时间,提高开发效率,比如技能编辑器,关卡编辑器这种。当然这只是编辑器开发的一些典型应用,它能做不止这些。学习完这个之后,我们可以开发项目需要的工具。我本意在编辑器里为新项目使用的一个开源框架编写使用文档、项目文档。
编辑器开发与拓展,unity给我们提供了很多类,用来实现编辑器的开发。下面简单介绍一下,实际上也就几个类,简单理解就是

  • ​​UI层​​:GUILayout/EditorGUILayout区别点击链接跳转了解一下就行
  • 数据层​​:SerializedObject/SerializedProperty
  • 交互层​​:Handles
  • 容器层​​:Editor/EditorWindow
  • 扩展层​​:PropertyDrawer
  • 辅助层​​:Undo/EditorUtility
层级 核心类 职责描述 补充说明
数据层 SerializedObject
SerializedProperty
安全访问序列化数据
• 多对象编辑支持
• 脏数据标记
• 撤销操作集成
编辑器与游戏对象间的数据桥梁,确保修改符合序列化规则
交互层 Handles 3D场景交互控制
• 场景视图控件绘制
• Gizmo操作
• 3D输入事件处理
Unity场景编辑的直接操作接口,提供可视化编辑能力
容器层 Editor
EditorWindow
UI容器管理
• Inspector面板容器
• 工具窗口框架
• 生命周期控制
编辑器扩展的基础容器,分别用于组件面板和独立工具窗口
扩展层 PropertyDrawer 属性定制渲染
• 数据类型可视化扩展
• 自定义属性布局
• 渲染逻辑封装
针对特定数据类型(枚举/结构体)的渲染扩展点
辅助层 Undo
EditorUtility
开发辅助工具
• 操作历史管理
• 进度条/弹窗控制
• 对象状态管理
编辑器工作流的效率工具集,提升开发体验和操作安全性
类名 核心职责 详细说明
GUILayout 与 EditorGUILayout UI 控件渲染 负责 UI 控件的绘制和布局管理:
• GUILayout:基础 UI 布局,适用于运行时和编辑器
• EditorGUILayout:编辑器专用 UI,支持序列化属性
两者区别详见正文
SerializedObject 数据安全管理 提供对序列化数据的安全访问:
• 获取 / 修改属性值
• 支持多对象编辑
• 自动处理脏数据标记
Undo 操作历史管理 实现撤销 / 重做功能:
• 记录对象修改历史
• 支持多步撤销
• 集成 Unity 编辑菜单
EditorUtility 工具辅助 提供实用编辑器服务:
• 进度条显示(DisplayProgressBar)
• 对话框(DisplayDialog)
• 对象脏标记(SetDirty)
Handles 3D 场景交互 Scene 视图专用控件:
• 创建移动 / 旋转 / 缩放手柄
• 绘制自定义 Gizmo
• 3D 辅助线绘制
EditorWindow 窗口容器 创建自定义工具窗口:
• 窗口生命周期管理
• 面板布局控制
• 菜单栏集成(MenuItem 属性)
PropertyDrawer 属性定制显示 特殊数据类型渲染优化:
• 枚举可视化
• 结构体自定义布局
• 数据验证(范围 / 格式检查)
Editor Inspector 定制 自定义组件检视面板:
• 重写 OnInspectorGUI()
• 使用 OnSceneGUI() 添加场景交互

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到