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

前言:对编辑器拓展与开发可以节省很多时间,提高开发效率,比如技能编辑器,关卡编辑器这种。当然这只是编辑器开发的一些典型应用,它能做不止这些。学习完这个之后,我们可以开发项目需要的工具。我本意在编辑器里为新项目使用的一个开源框架编写使用文档、项目文档。

编辑器开发与拓展,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() 添加场景交互
相关推荐
C蔡博士9 小时前
Unity2D物理系统-从入门到实战优化
unity·游戏引擎·rigidbody2d
亿洋16 小时前
vscode的continue插件接入第三方自定义中转api
人工智能·vscode·编辑器
mxwin16 小时前
Unity Shader 顶点动画:在顶点着色器中实现风吹草动、河流波动、布料模拟
unity·游戏引擎·shader·着色器
DowneyJoy17 小时前
【Unity3D补充知识点】常用数据结构分析-集合(List<T>)
数据结构·unity·c#·list
AI浩17 小时前
第 5 章:集成开发环境 (IDE) 协作 —— 终端与编辑器的双剑合璧
ide·人工智能·编辑器
DowneyJoy17 小时前
【Unity3D补充知识点】常用数据结构分析-数组(Array)
数据结构·unity·c#
日出等日落18 小时前
用 Kavita实现我的远程数字书屋搭建记!
java·开发语言·ide·vscode·编辑器
w-白兰地18 小时前
配置Unity中的ADB环境变量
unity·adb·游戏引擎
mxwin19 小时前
Unity Shader 几何着色器:动态生成图元与顶点拓扑修改
unity·游戏引擎·着色器
呆呆敲代码的小Y20 小时前
【Unity-AI开发篇】| 游戏中接入DeepSeek实现AI对话,完整详细步骤
人工智能·游戏·unity·ai·游戏引擎·u3d·deepseek