Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

编辑器开发简介

在这一页,你将了解到:

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

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

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

参见

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

技术选择

The Godot editor is drawn using Godot's renderer and UI system. It does not rely on a toolkit such as GTK or Qt. This is similar in spirit to software like Blender. While using toolkits makes it easier to achieve a "native" appearance, they are also quite heavy and their licensing is not compatible with Godot's.

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

目录结构

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

Some editor functionality is also implemented via modules. Some of these are only enabled in editor builds to decrease the binary size of export templates. See the modules/ folder in the Godot source repository.

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

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

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

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

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

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

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

Currently, there are some dependencies to editor/ includes in scene/ files, but they are in the process of being removed.

开发技巧

To iterate quickly on the editor, we recommend to set up a test project and open it from the command line after compiling the editor. This way, you don't have to go through the Project Manager every time you start Godot.