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 編輯器背後的**設計決策**。
如何高效地處理Godot編輯器的C++程式碼。
本指南針對的是目前或未來的引擎貢獻者。要在GDScript中建立編輯器外掛程式,請參見 製作外掛程式 。
也參考
如果你是 Godot 的新手,建議你在繼續之前先閱讀 Godot 的設計理念 。由於 Godot 編輯器是用 C++ 編寫的 Godot 專案,引擎的許多理念同樣適用於編輯器。
技術選擇¶
Godot 編輯器使用 Godot 的渲染器和 :ref:`UI 系統 <toc-gui-basics>`繪製。它*不*依賴 GTK 或 Qt 這樣的工具包。這與 Blender 等軟體的精神相似。雖然使用工具包可以更容易地實作“原生”外觀,但它們相當笨重,許可也與 Godot 的許可不相容。
該編輯器完全是用C++編寫的。它不能包含任何GDScript或C#程式碼。
檔案結構¶
clang-format 所使用的規則列在 Godot 儲存庫中的 .clang-format 檔案內。
一些編輯器的功能也是通過 modules 實作的。其中一些隻在編輯器建構中啟用,以減少匯出範本的二進位檔案大小。參見Godot源碼庫中的 modules/ 資料夾。
編輯器中的一些重要檔案包括:
editor/plugins/canvas_item_editor_plugin.cpp:2D 編輯器的視口和相關功能(頂部的工具列、編輯模式、重疊的助手/面板……)。
editor/spatial_editor_gizmos.cpp:定義和繪製 3D 編輯器小工具的地方。這個檔沒有對應的 2D 檔,因為 2D 的小工具是由節點自己繪製的。
scene/
中檔對編輯器的依賴性¶
在處理編輯器功能時,你可能需要修改Godot的GUI節點中的檔,你可以在 scene/
資料夾中找到。
需要記住的一條規則是,你**不能**給 editor/
在其他資料夾中引入新的依賴關係,如 scene/
。即使你使用 #ifdef TOOLS_ENABLED
也是如此。
為了使程式碼庫更容易操作,更自成一體,允許的依賴性順序是:
editor/
->scene/
->servers/
->core/
這意味著 editor/
中的檔可以依賴 scene/
, servers/
, 和 core/
中的包含。但是,雖然 scene/
可以依賴 servers/
和 core/
的內容,但它不能依賴 editor/
的內容。
目前,在 scene/
檔中存在一些對 editor/
的依賴,但 它們正在被刪除 。
開發¶
為了快速反覆運算編輯器,我們建議建立一個測試專案,並在編譯編輯器後:ref:從命令列打開 <doc_command_line_tutorial>。這樣,你就不必在每次啟動 Godot 時都要經過專案管理器了。