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...
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 Erstellen von Plugins.
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
Der Godot-Editor wird mit Godots Renderer und dem UI-System gezeichnet. Er ist nicht auf ein Toolkit wie GTK oder Qt angewiesen. Dies ist ähnlich wie bei Software wie Blender. Während die Verwendung von Toolkits es einfacher macht, ein "natives" Aussehen zu erreichen, sind sie auch ziemlich schwerfällig und ihre Lizenzierung ist nicht mit der von Godot kompatibel.
Der Editor ist vollständig in C++ geschrieben. Er kann keinen GDScript- oder C#-Code enthalten.
Verzeichnisstruktur
Der Code des Editors liegt vollständig im Ordner editor/ des Godot Quellcode-Repositorys.
Einige Editor-Funktionen werden auch über Module implementiert. Einige von ihnen sind nur in Editor-Builds aktiviert, um die Binärgröße von Exportvorlagen zu verringern. Siehe den Ordner modules/ im Godot Quellcode-Repository.
Einige wichtige Dateien im Editor sind:
editor/editor_node.cpp: Die Hauptinitialisierungsdatei des Editors. Effektiv die "Hauptszene" des Editors.
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.
Editor-Abhängigkeiten in scene/-Dateien
Wenn Sie an einem Editor-Feature 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.
Zur Zeit gibt es einige Abhängigkeiten zu editor/-Includes in scene/-Dateien, aber sie sind dabei, entfernt zu werden.
Tipps zur Entwicklung
Um schnell mit dem Editor arbeiten zu können, empfehlen wir, ein Testprojekt zu erstellen und es nach dem Kompilieren des Editors über die Kommandozeile zu öffnen. Auf diese Weise müssen Sie nicht jedes Mal, wenn Sie Godot starten, über den Projektmanager gehen.