Виды плагинов редактора
Выбрать панель, главное рабочее пространство или другой тип расширения.
Выбирайте минимальную точку расширения под задачу. Собственная панель не требует писать новый импортёр, а изменение Inspector не требует отдельного главного экрана.
| Задача | Тип / механизм |
|---|---|
| Добавить меню, панель, управлять регистрациями | EditorPlugin с [Tool]. |
| Выполнять редакторскую логику скрипта | [Tool] и проверка Engine.IsEditorHint(). |
| Одна запускаемая редакторская операция | EditorScript._Run(); отдельный тип, не жизненный цикл плагина. |
| Изменить представление свойств | EditorInspectorPlugin, подключённый через EditorPlugin. |
| Импортировать свой формат | EditorImportPlugin. |
| Добавить 3D-манипулятор | EditorEntity3DGizmoPlugin. |
| Создать самостоятельное рабочее пространство | EditorDock со слотом MainScreen. |
Для первого примера используйте панель и меню: регистрация в _EnterTree(), удаление регистраций и своих объектов в _ExitTree(). Повторное включение должно возвращать ровно один экземпляр панели и обработчика.
Если код меняет редактируемую сцену, отдельно спроектируйте отмену/повтор через редакторский UndoRedo и принадлежность сохраняемых объектов. Показанный пример читает данные, поэтому не создаёт изменений сцены, которые требовали бы отмены.
Пример главного экрана использует актуальный AddDock() и EditorDock.DockSlot.MainScreen: рабочее пространство. Он не требует старой схемы _HasMainScreen() / _MakeVisible().
Выполнены две разновидности EditorDock, меню, повторное включение и очистка. EditorScript, Inspector, импортёры, gizmo, изменение сцен и визуальное отображение этим набором не проверялись; таблица объясняет назначение API, не подтверждает все виды расширений.