菜单

编辑器核心

相关源文件

编辑器核心是 Godot 编辑器界面的基础,提供管理编辑器窗口、处理用户交互以及协调各种编辑器组件的基本功能。本文档将解释编辑器核心的架构、初始化和关键系统。

有关特定编辑器子系统的信息,请参阅 场景树和文件系统面板检查器系统2D 和 3D 编辑器

架构概述

编辑器核心围绕一个名为 EditorNode 的中央控制器类构建,它充当整个编辑器的主要协调器。此类负责管理编辑器的生命周期、处理编辑器窗口、协调各种子系统之间的通信,并维护整体编辑器状态。

来源

编辑器初始化

当 Godot 以编辑器模式启动时,它会通过一系列步骤来初始化编辑器。这个过程包括设置单例、构建 UI、加载设置和初始化子系统。

来源

EditorNode

EditorNode 类是编辑器界面的中央控制器。它管理整体用户界面、协调子系统之间的通信,并处理诸如打开和保存场景等全局编辑器操作。

主要职责

  • 初始化编辑器系统
  • 管理场景和项目生命周期
  • 协调编辑器组件之间的通信
  • 处理 UI 布局和主题
  • 管理插件系统
  • 处理用户输入和快捷键

来源

编辑器数据和状态管理

编辑器通过几个核心类来维护其状态

  1. EditorData:存储有关打开的场景、编辑的场景和对象选择历史的信息。
  2. EditorSelection:管理当前选定的节点。
  3. EditorSettings:存储和管理用户偏好设置和配置。
  4. EditorSelectionHistory:跟踪所选对象的导航历史,以实现前进/后退功能。

来源

主题系统

编辑器拥有一个复杂的 theaming 系统,用于控制其外观。theaming 系统使用标准的 Godot theaming 资源,但为编辑器模式(浅色或深色)和强调色添加了特定于编辑器的处理。

关键组件

  • EditorThemeManager:根据设置生成编辑器 theaming
  • theaming 缓存:存储常用 theaming 元素的引用
  • 系统 theaming 集成:如果配置了,可以遵循系统 theaming

来源

主屏幕和面板系统

编辑器界面由周围的面板环绕的主屏幕区域组成

  1. 主屏幕:在不同的编辑模式(2D、3D、脚本、AssetLib)之间切换
  2. 面板系统:管理编辑器边缘周围可停靠的面板(文件系统、场景、检查器等)

来源

插件系统

编辑器核心提供了一个复杂的插件系统,允许扩展编辑器的功能。插件可以添加新的编辑工具、与主编辑器界面集成,以及添加自定义面板和面板。

插件系统的关键方面

  • EditorPlugin:所有编辑器插件的基类
  • 插件注册和初始化
  • 插件与编辑器的通信
  • 编辑器资源处理

来源

设置和配置

编辑器的配置通过 EditorSettings 类进行管理,该类提供了对所有编辑器偏好设置的访问。这些设置控制编辑器的行为、外观和功能。

关键方面:

  • 设置按类别组织,并采用分层命名约定
  • 设置可以具有不同的类型(bool、int、float、string 等)
  • 设置可以标记为项目特定或全局
  • 设置可以标记为需要重启

来源

项目管理器

项目管理器在加载任何项目之前提供初始界面。虽然技术上独立于编辑器核心,但它共享许多组件,值得一提,因为它是编辑器的入口点。

关键组件

  • 项目列表管理
  • 项目创建和导入
  • 资源库集成
  • 与主编辑器类似的 theaming 和 UI 系统

来源

组件之间的通信

编辑器核心组件通过直接方法调用、信号和共享数据结构的组合进行通信

  1. 直接方法调用,用于紧密耦合的组件之间
  2. 信号系统,用于松散耦合的不同系统
  3. 共享数据结构,如 EditorData 用于状态管理
  4. 用于生命周期事件的通知系统

来源

场景和资源管理

编辑器核心通过系统的组合来管理场景和资源

  1. 打开场景的场景标签
  2. 场景保存和加载
  3. 资源导入和编辑
  4. 用于更改的撤销/重做系统

来源

输入和快捷键处理

编辑器核心拥有一个复杂的输入处理系统,用于处理键盘快捷键和鼠标事件

  • 用于编辑器全局操作的全局快捷键系统
  • 用于特定编辑器上下文的上下文敏感快捷键
  • 输入事件向适当处理程序的传播

来源