Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Введение в разработку редактора
На этой странице вы узнаете:
Дизайн-решения, лежащие в основе редактора Godot.
Как эффективно работать с C++-кодом редактора Godot.
Это руководство предназначено для текущих и будущих разработчиков движка. Чтобы создать плагины редактора в GDScript, см. Создание плагинов.
См. также
Если вы новичок в Godot, рекомендуем вам ознакомиться с документом Философия дизайна Godot, прежде чем продолжить. Поскольку редактор Godot — это проект Godot, написанный на C++, значительная часть философии движка применима и к нему.
Технические решения
Редактор Godot отрисовывается с использованием рендерера Godot и UI system. Он не использует такие инструменты, как GTK или Qt. Это похоже на программы вроде Blender. Хотя использование инструментов упрощает достижение "родного" внешнего вида, они также довольно громоздки, а их лицензирование несовместимо с Godot.
Редактор полностью написан на C++. Он не может содержать код GDScript или C#.
Структура каталога
Код редактора полностью автономен и находится в папке editor/ в исходном репозитории Godot.
Некоторые функции редактора также реализованы через modules. Некоторые из них доступны только в сборках редактора для уменьшения размера двоичного файла шаблонов экспорта. См. папку modules/ в репозитории исходного кода Godot.
Некоторые важные файлы в редакторе:
editor/editor_node.cpp: Основной файл инициализации редактора. Фактически, "главная сцена" редактора.
editor/project_manager/project_manager.cpp: Main Project Manager initialization file. Effectively the "main scene" of the Project Manager.
editor/scene/canvas_item_editor_plugin.cpp: The 2D editor viewport and related functionality (toolbar at the top, editing modes, overlaid helpers/panels, …).
editor/scene/3d/node_3d_editor_plugin.cpp: The 3D editor viewport and related functionality (toolbar at the top, editing modes, overlaid panels, …).
editor/scene/3d/node_3d_editor_gizmos.cpp: Where the 3D editor gizmos are defined and drawn. This file doesn't have a 2D counterpart as 2D gizmos are drawn by the nodes themselves.
Зависимости редактора в файлах scene/
При работе над функцией редактора вам, возможно, придется изменить файлы в узлах графического интерфейса Godot, которые вы можете найти в папке scene/.
Важно помнить одно правило: не добавлять новые зависимости к editor/ в других папках, например, scene/. Это правило действует даже при использовании #ifdef TOOLS_ENABLED.
Чтобы сделать кодовую базу более понятной и замкнутой, допустимый порядок зависимостей следующий:
editor/->scene/->servers/->core/
Это означает, что файлы в каталоге editor/ могут зависеть от включений из каталогов scene/, servers/ и core/. Но, например, хотя scene/ может зависеть от включений из каталогов servers/ и core/, он не может зависеть от включений из каталога editor/.
В настоящее время существуют некоторые зависимости от editor/, включаемые в файлы scene/, но они находятся в процессе удаления.
Советы по разработке
Для быстрой итерации в редакторе рекомендуем создать тестовый проект и открыть его из командной строки после компиляции редактора. Таким образом, вам не придётся каждый раз запускать Godot через менеджер проектов.