编辑器开发简介

在这一页,你将了解到:

  • Godot编辑器背后的 设计决策

  • 如何高效地处理Godot编辑器的C++代码。

本指南针对的是目前或未来的引擎贡献者。要在GDScript中创建编辑器插件,请参见 制作插件

参见

如果你是Godot的新手,建议你在继续之前先阅读 Godot的设计理念 。由于Godot编辑器是一个用C++编写的Godot项目,引擎的许多理念同样适用于编辑器。

技术选择

Godot编辑器使用Godot的渲染器和 UI系统 绘制。它 依赖GTK或Qt这样的工具包。这与Blender等软件的精神相似。虽然使用工具包可以更容易地实现 "原生 " 外观,但它们也相当沉重,而且它们的许可与Godot的许可不兼容。

该编辑器完全是用C++编写的。它不能包含任何GDScript或C#代码。

目录结构

编辑器的代码完全独立于Godot源代码库的 editor/ 文件夹中。

一些编辑器的功能也是通过 modules 实现的。其中一些只在编辑器构建中启用,以减少导出模板的二进制文件大小。参见Godot源码库中的 modules/ 文件夹。

编辑器中的一些重要文件包括:

scene/ 文件中的编辑器依赖性

在处理编辑器功能时,你可能需要修改Godot的GUI节点中的文件,你可以在 scene/ 文件夹中找到。

需要记住的一条规则是,你 不能editor/ 在其他文件夹中引入新的依赖关系,如 scene/ 。即使你使用 #ifdef TOOLS_ENABLED 也是如此。

为了使代码库更容易操作,更自成一体,允许的依赖性顺序是:

  • editor/ -> scene/ -> servers/ -> core/

这意味着 editor/ 中的文件可以依赖 scene/, servers/, 和 core/ 中的包含。但是,虽然 scene/ 可以依赖 servers/core/ 的内容,但它不能依赖 editor/ 的内容。

目前,在 scene/ 文件中存在一些对 editor/ 的依赖,但 它们正在被删除

开发技巧

为了快速迭代编辑器,我们建议建立一个测试项目,并在编译编辑器后从命令行 <doc_command_line_tutorial> 打开它。这样,你就不必在每次启动Godot时都要经过项目管理器了。