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/ 資料夾。

編輯器中的一些重要檔案包括:

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 時都要經過專案管理器了。