菜单

编辑器架构

相关源文件

本文档解释了 Godot 编辑器的架构,详细介绍了其核心组件以及它们如何协同工作以提供集成开发环境。有关场景系统或渲染等特定编辑器功能的信息,请参阅文档中的相应部分。

概述

Godot 编辑器本身是建立在 Godot 引擎之上的一个特殊场景。这意味着编辑器本质上是一个 Godot 应用程序,它提供了创建其他 Godot 应用程序的工具。其架构遵循模块化方法,一个中央编辑器节点协调各种子系统。

主要组件图

来源

核心编辑器类

EditorNode

EditorNode 类是编辑器架构的核心。它作为整个编辑器的主要入口点和控制器,负责初始化、管理和协调所有其他编辑器组件。

主要职责

  • 初始化和管理编辑器子系统
  • 协调各个面板、区域和对话框之间的通信
  • 处理场景编辑操作
  • 管理编辑器插件
  • 处理编辑器特有的输入和快捷键
  • 协调工具操作

来源

EditorData

EditorData 类管理与正在编辑的场景相关的所有数据,包括:

  • 当前打开的场景和编辑的对象
  • 用于导航选择的编辑器历史记录
  • 场景历史记录跟踪
  • 多场景编辑支持

来源

EditorSettings

EditorSettings 类负责处理所有编辑器特定的设置、偏好和配置。这些设置与项目设置分开存储,并且仅影响编辑器的行为和外观。这些设置在不同项目之间是持久的。

主要功能

  • 独立于项目的编辑器配置
  • 编辑器主题和 UI 设置
  • 编辑器行为偏好
  • 工具设置和默认值
  • 编辑器按键绑定和快捷键

来源

编辑器 UI 结构

编辑器的 UI 是使用 Godot 自有的 UI 工具包构建的。主布局包括面板、区域和一个中央编辑区域,所有这些都由 `EditorNode` 类进行管理。

主屏幕和分割系统

来源

面板系统

编辑器将工具组织成“面板”,这些面板可以重新排列、选项卡化并停靠在编辑器窗口的边缘。主要面板包括:

  1. FileSystemDock:项目文件和资源的浏览器
  2. SceneTreeDock:当前场景层次结构的树状视图
  3. InspectorDock:选定对象的属性和配置
  4. ImportDock:资源的导入设置
  5. NodeDock:节点特定操作
  6. HistoryDock:选择历史记录

`EditorDockManager` 类管理这些面板、它们的放置和组织。

来源

编辑器初始化

编辑器启动时,它会遵循特定的初始化顺序来设置其组件。

来源

编辑器面板

FileSystemDock

FileSystemDock 提供项目文件系统的树状视图和文件列表视图。它处理文件操作,如导入、移动、重命名以及创建新文件或文件夹。

主要功能

  • 文件浏览和管理
  • 资源导入
  • 资源创建
  • 资源库集成

来源

SceneTreeDock

SceneTreeDock 显示和管理场景层次结构。它提供了场景操作、节点创建和组织的工具。

主要功能

  • 节点创建和操作
  • 场景实例化
  • 场景保存/加载
  • 通过 InspectorDock 编辑节点属性

来源

InspectorDock

InspectorDock 使用 `EditorInspector` 类显示并允许编辑当前选定节点或资源的属性。

来源

插件系统

Godot 编辑器可以通过插件进行扩展。插件是继承自 `EditorPlugin` 类的脚本,可以为编辑器添加新功能。

插件架构

插件可以:

  • 添加新的菜单项和工具
  • 添加新的面板或区域
  • 处理特定对象类型的编辑
  • 为现有编辑器功能添加功能
  • 创建全新的编辑器体验

编辑器通过 `EditorNode` 类中的 `editor_plugins` 和 `editor_plugins_over` 列表来管理插件。

来源

编辑器 GUI 结构

Godot 编辑器的 GUI 遵循特定的结构,各种 UI 元素以层次结构组织。

主 GUI 布局

来源

主题系统

编辑器使用 Godot 的主题系统进行外观定制。`EditorThemeManager` 根据颜色方案、图标集和缩放因子等设置生成编辑器主题。

来源

项目管理

ProjectManager 类负责在编辑器打开之前列出、创建和管理项目。一旦选择了项目并打开了编辑器,`EditorNode` 就会接管。

EditorData 类有助于管理项目中的多个打开的场景。

来源

资产管理

文件系统处理

资产管理主要通过 `EditorFileSystem` 进行处理,该系统:

  • 扫描项目目录
  • 维护资源的元数据
  • 监视文件更改
  • 触发导入

FileSystemDock 提供了用于浏览和管理这些资产的用户界面。

来源

资源导入系统

资源通过一个可扩展的导入系统进行导入,该系统处理和优化外部资产以供引擎使用。

来源

场景编辑

2D 和 3D 编辑

编辑器使用专门的编辑界面来处理 2D(`CanvasItemEditor`)和 3D(`Node3DEditor`)内容。这些由 `EditorMainScreen` 类进行管理。

来源

控件节点编辑

编辑器通过 2D 编辑器提供 UI 元素的专用编辑工具,并为 Control 派生节点增加了额外功能。

结论

Godot 编辑器架构由一个集中的 `EditorNode` 组成,该节点管理面板、区域、插件和编辑界面的系统。这种模块化设计允许灵活性和可扩展性,同时保持一致的用户体验。

编辑器本身被设计为一个 Godot 应用程序,使用了引擎自身的节点和场景系统,这展示了 Godot 引擎构建复杂应用程序的强大功能和灵活性。