Einführung in die Editorentwicklung¶
Auf dieser Seite erfahren Sie:
Die Designentscheidungen hinter dem Godot-Editor.
Wie man effizient am C++-Code des Godot-Editors arbeitet.
Diese Anleitung richtet sich an aktuelle oder zukünftige Engine-Mitwirkende. Um Editor-Plugins in GDScript zu erstellen, siehe stattdessen Erweiterungen (Plugins) erstellen.
Siehe auch
Wenn Sie neu bei Godot sind, empfehlen wir Ihnen, Godots Design-Philosophie zu lesen, bevor Sie fortfahren. Da der Godot-Editor ein in C++ geschriebenes Godot-Projekt ist, gilt ein Großteil der Philosophie der Engine auch für den Editor.
Technische Entscheidungen¶
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.
Der Editor ist vollständig in C++ geschrieben. Er kann keinen GDScript- oder C#-Code enthalten.
Verzeichnisstruktur¶
Der Code des Editors ist vollständig im Ordner editor/ des Godot-Source-Repositorys.
Einige Editor-Funktionen sind auch über Module implementiert. Einige davon sind nur in Editor-Builds aktiviert, um die Binärgröße von Exportvorlagen zu verringern. Siehe den Ordner modules/ im Godot-Source-Repository.
Einige wichtige Dateien im Editor sind:
editor/editor_node.cpp: Hauptinitialisierungsdatei des Editors. Effektiv die "Hauptszene" des Editors.
editor/project_manager.cpp: Hauptinitialisierungsdatei des Projektmanagers. Effektiv die "Hauptszene" des Projektmanagers.
editor/plugins/canvas_item_editor_plugin.cpp: Das 2D-Editor-Ansichtsfenster und die zugehörige Funktionalität (Werkzeugleiste am oberen Rand, Bearbeitungsmodi, überlagerte Helfer/Panels, ...).
editor/plugins/spatial_editor_plugin.cpp: Das 3D-Editor-Ansichtsfenster und die zugehörige Funktionalität (Symbolleiste am oberen Rand, Bearbeitungsmodi, überlagerte Panels, ...).
editor/spatial_editor_gizmos.cpp: Wo die 3D-Editor-Gizmos definiert und gezeichnet werden. Diese Datei hat kein 2D-Gegenstück, da 2D-Gizmos von den Nodes selbst gezeichnet werden.
Editor-Abhängigkeiten in scene/
-Dateien¶
Wenn Sie an einer Editor-Funktion arbeiten, müssen Sie möglicherweise Dateien in Godots GUI-Nodes ändern, die Sie im Ordner scene/
finden.
Eine Regel, die Sie beachten sollten, ist, dass Sie keine neuen Abhängigkeiten zu editor/
-Includes in anderen Ordnern wie scene/
einführen dürfen. Dies gilt auch, wenn Sie #ifdef TOOLS_ENABLED
verwenden.
Um die Codebasis übersichtlicher und in sich geschlossener zu gestalten, ist die zulässige Reihenfolge der Abhängigkeiten:
editor/
->scene/
->servers/
->core/
Das bedeutet, dass Dateien in editor/
von Includes aus scene/
, servers/
und core/
abhängen können. Aber während zum Beispiel scene/
von Includes aus servers/
und core/
abhängen kann, kann es nicht von Includes aus editor/
abhängen.
Derzeit gibt es noch einige Abhängigkeiten zu editor/
-Includes in scene/
-Dateien, die aber derzeit entfernt werden.
Tipps zur Entwicklung¶
Um schnell über den Editor zu iterieren, empfehlen wir, ein Testprojekt einzurichten und es nach dem Kompilieren des Editors von der Kommandozeile zu öffnen. Auf diese Weise müssen Sie nicht jedes Mal, wenn Sie Godot starten, durch den Projektmanager gehen.