EditorPlugin

Наследует: Node < Object

Наследуется от: GridMapEditorPlugin

Используется редактором для расширения его функциональности.

Описание

Плагины используются редактором для расширения функциональности. Наиболее распространенными типами плагинов являются те, которые редактируют заданный узел или тип ресурса, импортируют плагины и экспортируют плагины. См. также EditorScript, чтобы добавить функции в редактор.

Примечание: Некоторые имена в этом классе содержат «left» или «right» (например, DOCK_SLOT_LEFT_UL). Эти API предполагают расположение слева направо и будут обратными при использовании расположения справа налево. Эти имена сохранены из соображений совместимости.

Обучающие материалы

Методы

void

_apply_changes() virtual

bool

_build() virtual

void

_clear() virtual

void

_disable_plugin() virtual

void

_edit(object: Object) virtual

void

_enable_plugin() virtual

void

_forward_3d_draw_over_viewport(viewport_control: Control) virtual

void

_forward_3d_force_draw_over_viewport(viewport_control: Control) virtual

int

_forward_3d_gui_input(viewport_camera: Camera3D, event: InputEvent) virtual

void

_forward_canvas_draw_over_viewport(viewport_control: Control) virtual

void

_forward_canvas_force_draw_over_viewport(viewport_control: Control) virtual

bool

_forward_canvas_gui_input(event: InputEvent) virtual

PackedStringArray

_get_breakpoints() virtual const

Texture2D

_get_plugin_icon() virtual const

String

_get_plugin_name() virtual const

Dictionary

_get_state() virtual const

String

_get_unsaved_status(for_scene: String) virtual const

void

_get_window_layout(configuration: ConfigFile) virtual

bool

_handles(object: Object) virtual const

bool

_has_main_screen() virtual const

void

_make_visible(visible: bool) virtual

PackedStringArray

_run_scene(scene: String, args: PackedStringArray) virtual const

void

_save_external_data() virtual

void

_set_state(state: Dictionary) virtual

void

_set_window_layout(configuration: ConfigFile) virtual

void

add_autoload_singleton(name: String, path: String)

void

add_context_menu_plugin(slot: ContextMenuSlot, plugin: EditorContextMenuPlugin)

Button

add_control_to_bottom_panel(control: Control, title: String, shortcut: Shortcut = null)

void

add_control_to_container(container: CustomControlContainer, control: Control)

void

add_control_to_dock(slot: DockSlot, control: Control, shortcut: Shortcut = null)

void

add_custom_type(type: String, base: String, script: Script, icon: Texture2D)

void

add_debugger_plugin(script: EditorDebuggerPlugin)

void

add_dock(dock: EditorDock)

void

add_export_platform(platform: EditorExportPlatform)

void

add_export_plugin(plugin: EditorExportPlugin)

void

add_import_plugin(importer: EditorImportPlugin, first_priority: bool = false)

void

add_inspector_plugin(plugin: EditorInspectorPlugin)

void

add_node_3d_gizmo_plugin(plugin: EditorNode3DGizmoPlugin)

void

add_resource_conversion_plugin(plugin: EditorResourceConversionPlugin)

void

add_scene_format_importer_plugin(scene_format_importer: EditorSceneFormatImporter, first_priority: bool = false)

void

add_scene_post_import_plugin(scene_import_plugin: EditorScenePostImportPlugin, first_priority: bool = false)

void

add_tool_menu_item(name: String, callable: Callable)

void

add_tool_submenu_item(name: String, submenu: PopupMenu)

void

add_translation_parser_plugin(parser: EditorTranslationParserPlugin)

void

add_undo_redo_inspector_hook_callback(callable: Callable)

EditorInterface

get_editor_interface()

PopupMenu

get_export_as_menu()

String

get_plugin_version() const

ScriptCreateDialog

get_script_create_dialog()

EditorUndoRedoManager

get_undo_redo()

void

hide_bottom_panel()

void

make_bottom_panel_item_visible(item: Control)

void

queue_save_layout()

void

remove_autoload_singleton(name: String)

void

remove_context_menu_plugin(plugin: EditorContextMenuPlugin)

void

remove_control_from_bottom_panel(control: Control)

void

remove_control_from_container(container: CustomControlContainer, control: Control)

void

remove_control_from_docks(control: Control)

void

remove_custom_type(type: String)

void

remove_debugger_plugin(script: EditorDebuggerPlugin)

void

remove_dock(dock: EditorDock)

void

remove_export_platform(platform: EditorExportPlatform)

void

remove_export_plugin(plugin: EditorExportPlugin)

void

remove_import_plugin(importer: EditorImportPlugin)

void

remove_inspector_plugin(plugin: EditorInspectorPlugin)

void

remove_node_3d_gizmo_plugin(plugin: EditorNode3DGizmoPlugin)

void

remove_resource_conversion_plugin(plugin: EditorResourceConversionPlugin)

void

remove_scene_format_importer_plugin(scene_format_importer: EditorSceneFormatImporter)

void

remove_scene_post_import_plugin(scene_import_plugin: EditorScenePostImportPlugin)

void

remove_tool_menu_item(name: String)

void

remove_translation_parser_plugin(parser: EditorTranslationParserPlugin)

void

remove_undo_redo_inspector_hook_callback(callable: Callable)

void

set_dock_tab_icon(control: Control, icon: Texture2D)

void

set_force_draw_over_forwarding_enabled()

void

set_input_event_forwarding_always_enabled()

int

update_overlays() const


Сигналы

main_screen_changed(screen_name: String) 🔗

Вызывается, когда пользователь меняет рабочее пространство (2D, 3D, Script, Game, AssetLib). Также работает с пользовательскими экранами, определенными плагинами.


project_settings_changed() 🔗

Устарело: Use ProjectSettings.settings_changed instead.

Генерируется при изменении каких-либо настроек проекта.


resource_saved(resource: Resource) 🔗

Выдается, когда заданный resource был сохранен на диске. См. также scene_saved.


scene_changed(scene_root: Node) 🔗

Выдается при изменении сцены в редакторе. Аргумент вернет корневой узел сцены, которая только что стала активной. Если эта сцена новая и пустая, аргумент будет null.


scene_closed(filepath: String) 🔗

Вызывается, когда пользователь закрывает сцену. Аргумент — путь к файлу закрытой сцены.


scene_saved(filepath: String) 🔗

Выдается при сохранении сцены на диске. Аргумент — путь к файлу сохраненной сцены. См. также resource_saved.


Перечисления

enum CustomControlContainer: 🔗

CustomControlContainer CONTAINER_TOOLBAR = 0

Основная панель инструментов редактора, рядом с кнопками воспроизведения.

CustomControlContainer CONTAINER_SPATIAL_EDITOR_MENU = 1

Панель инструментов, которая появляется при активном 3D-редакторе.

CustomControlContainer CONTAINER_SPATIAL_EDITOR_SIDE_LEFT = 2

Левая боковая панель 3D-редактора.

CustomControlContainer CONTAINER_SPATIAL_EDITOR_SIDE_RIGHT = 3

Правая боковая панель 3D-редактора.

CustomControlContainer CONTAINER_SPATIAL_EDITOR_BOTTOM = 4

Нижняя панель 3D-редактора.

CustomControlContainer CONTAINER_CANVAS_EDITOR_MENU = 5

Панель инструментов, которая появляется при активном 2D-редакторе.

CustomControlContainer CONTAINER_CANVAS_EDITOR_SIDE_LEFT = 6

Левая боковая панель 2D-редактора.

CustomControlContainer CONTAINER_CANVAS_EDITOR_SIDE_RIGHT = 7

Правая боковая панель 2D-редактора.

CustomControlContainer CONTAINER_CANVAS_EDITOR_BOTTOM = 8

Нижняя панель 2D-редактора.

CustomControlContainer CONTAINER_INSPECTOR_BOTTOM = 9

Нижняя часть инспектора.

CustomControlContainer CONTAINER_PROJECT_SETTING_TAB_LEFT = 10

Вкладка диалогового окна «Параметры проекта», слева от других вкладок.

CustomControlContainer CONTAINER_PROJECT_SETTING_TAB_RIGHT = 11

Вкладка диалогового окна «Параметры проекта», справа от других вкладок.


enum DockSlot: 🔗

DockSlot DOCK_SLOT_NONE = -1

Док-панель закрыта.

DockSlot DOCK_SLOT_LEFT_UL = 0

Слот для док-станции, левая сторона, вверху слева (в макете по умолчанию пуст).

DockSlot DOCK_SLOT_LEFT_BL = 1

Слот для док-станции, левая сторона, внизу слева (в макете по умолчанию пуст).

DockSlot DOCK_SLOT_LEFT_UR = 2

Слот док-станции, левая сторона, вверху справа (в макете по умолчанию включены док-станции «Сцена» и «Импорт»).

DockSlot DOCK_SLOT_LEFT_BR = 3

Слот для док-станции, слева, снизу справа (в макете по умолчанию включен док-станция для файловой системы).

DockSlot DOCK_SLOT_RIGHT_UL = 4

Слот для док-станции, правая сторона, верхний левый угол (в макете по умолчанию включены доки «Инспектор», «Узлы» и «История»).

DockSlot DOCK_SLOT_RIGHT_BL = 5

Слот для док-станции, правая сторона, левый нижний угол (в макете по умолчанию пуст).

DockSlot DOCK_SLOT_RIGHT_UR = 6

Слот для док-станции, правая сторона, вверху справа (пустой в макете по умолчанию).

DockSlot DOCK_SLOT_RIGHT_BR = 7

Слот для док-станции, справа, внизу справа (в макете по умолчанию пуст).

DockSlot DOCK_SLOT_BOTTOM = 8

Нижняя панель.

DockSlot DOCK_SLOT_MAX = 9

Представляет размер перечисления DockSlot.


enum AfterGUIInput: 🔗

AfterGUIInput AFTER_GUI_INPUT_PASS = 0

Пересылает InputEvent другим EditorPlugins.

AfterGUIInput AFTER_GUI_INPUT_STOP = 1

Предотвращает доступ InputEvent к другим классам редактора.

AfterGUIInput AFTER_GUI_INPUT_CUSTOM = 2

Передайте InputEvent другим плагинам редактора, кроме основного Node3D. Это можно использовать для предотвращения изменений выбора узлов и работы с под-gizmos.


Описания метода

void _apply_changes() virtual 🔗

Этот метод вызывается, когда редактор собирается сохранить проект, переключиться на другую вкладку и т. д. Он просит плагин применить любые отложенные изменения состояния, чтобы обеспечить согласованность.

Это используется, например, в редакторах шейдеров, чтобы дать плагину знать, что он должен применить код шейдера, написанный пользователем, к объекту.


bool _build() virtual 🔗

Этот метод вызывается, когда редактор собирается запустить проект.

Затем плагин может выполнить требуемые операции перед запуском проекта. Этот метод должен возвращать логическое значение. Если этот метод возвращает false, проект не будет запущен. Запуск немедленно прерывается, поэтому это также предотвращает запуск всех методов _build() других плагинов.


void _clear() virtual 🔗

Очистите все состояния и сбросьте редактируемый объект на ноль. Это гарантирует, что ваш плагин не будет продолжать редактировать существующий узел или узел из неправильной сцены.


void _disable_plugin() virtual 🔗

Вызывается движком, когда пользователь отключает EditorPlugin на вкладке «Плагин» окна настроек проекта.


void _edit(object: Object) virtual 🔗

Эта функция используется для плагинов, которые редактируют определенные типы объектов (узлы или ресурсы). Она запрашивает редактор для редактирования указанного объекта.

object может быть null, если плагин редактировал объект, но больше нет выбранного объекта, обрабатываемого этим плагином. Его можно использовать для очистки состояния редактирования.


void _enable_plugin() virtual 🔗

Вызывается движком, когда пользователь включает EditorPlugin на вкладке «Плагин» окна настроек проекта.


void _forward_3d_draw_over_viewport(viewport_control: Control) virtual 🔗

Вызывается движком при обновлении области просмотра 3D-редактора. viewport_control — это наложение поверх области просмотра, которое можно использовать для рисования. Обновить область просмотра можно вручную, вызвав update_overlays().

func _forward_3d_draw_over_viewport(overlay):
    # Нарисуйте круг в месте расположения курсора.
    overlay.draw_circle(overlay.get_local_mouse_position(), 64, Color.WHITE)

func _forward_3d_gui_input(camera, event):
    if event is InputEventMouseMotion:
        # Перерисовывать область просмотра при перемещении курсора.
        update_overlays()
        return EditorPlugin.AFTER_GUI_INPUT_STOP
    return EditorPlugin.AFTER_GUI_INPUT_PASS

void _forward_3d_force_draw_over_viewport(viewport_control: Control) virtual 🔗

Этот метод такой же, как _forward_3d_draw_over_viewport(), за исключением того, что он рисует поверх всего. Полезно, когда вам нужен дополнительный слой, который отображается поверх всего остального.

Вам нужно включить вызов этого метода с помощью set_force_draw_over_forwarding_enabled().


int _forward_3d_gui_input(viewport_camera: Camera3D, event: InputEvent) virtual 🔗

Вызывается, когда в текущей редактируемой сцене есть корневой узел, реализуется _handles(), и в окне 3D-просмотра происходит InputEvent. Возвращаемое значение определяет, будет ли InputEvent использован или перенаправлен другим EditorPlugin. См. AfterGUIInput для опций.

# Предотвращает попадание InputEvent в другие классы редактора.
func _forward_3d_gui_input(camera, event):
    return EditorPlugin.AFTER_GUI_INPUT_STOP

Этот метод должен возвращать AFTER_GUI_INPUT_PASS для пересылки InputEvent другим классам редактора.

# Потребляет InputEventMouseMotion и пересылает другие типы InputEvent.
func _forward_3d_gui_input(camera, event):
    return EditorPlugin.AFTER_GUI_INPUT_STOP if event is InputEventMouseMotion else EditorPlugin.AFTER_GUI_INPUT_PASS

void _forward_canvas_draw_over_viewport(viewport_control: Control) virtual 🔗

Вызывается движком при обновлении области просмотра 2D-редактора. viewport_control — это наложение поверх области просмотра, которое можно использовать для рисования. Обновить область просмотра можно вручную, вызвав update_overlays().

func _forward_canvas_draw_over_viewport(overlay):
    # Нарисуйте круг в месте расположения курсора.
    overlay.draw_circle(overlay.get_local_mouse_position(), 64, Color.WHITE)

func _forward_canvas_gui_input(event):
    if event is InputEventMouseMotion:
        # Перерисовывать область просмотра при перемещении курсора.
        update_overlays()
        return true
    return false

void _forward_canvas_force_draw_over_viewport(viewport_control: Control) virtual 🔗

Этот метод такой же, как _forward_canvas_draw_over_viewport(), за исключением того, что он рисует поверх всего. Полезно, когда вам нужен дополнительный слой, который отображается поверх всего остального.

Вам нужно включить вызов этого метода с помощью set_force_draw_over_forwarding_enabled().


bool _forward_canvas_gui_input(event: InputEvent) virtual 🔗

Вызывается, когда в текущей редактируемой сцене есть корневой узел, реализуется _handles(), и в 2D-окне просмотра происходит InputEvent. Если этот метод возвращает true, event перехватывается этим EditorPlugin, в противном случае event пересылается другим классам Editor.

# Предотвращает попадание InputEvent в другие классы редактора.
func _forward_canvas_gui_input(event):
    return true

Этот метод должен возвращать false, чтобы переслать InputEvent другим классам редактора.

# Потребляет InputEventMouseMotion и пересылает другие типы InputEvent.
func _forward_canvas_gui_input(event):
    if (event is InputEventMouseMotion):
        return true
    return false

PackedStringArray _get_breakpoints() virtual const 🔗

Это для редакторов, которые редактируют объекты на основе скриптов. Вы можете вернуть список точек останова в формате (script:line), например: res://path_to_script.gd:25.


Texture2D _get_plugin_icon() virtual const 🔗

Переопределите этот метод в вашем плагине, чтобы вернуть Texture2D, и чтобы присвоить ему значок.

Для плагинов главного экрана он отображается в верхней части экрана, справа от кнопок «2D», «3D», «Script», «Game» и «AssetLib».

В идеале значок плагина должен быть белым с прозрачным фоном и размером 16×16 пикселей.

func _get_plugin_icon():
    # Вы можете использовать пользовательскую иконку:
    return preload("res://addons/my_plugin/my_plugin_icon.svg")
    # Или использовать встроенную иконку:
    return EditorInterface.get_editor_theme().get_icon("Node", "EditorIcons")

String _get_plugin_name() virtual const 🔗

Переопределите этот метод в вашем плагине, чтобы указать имя плагина при отображении в редакторе Godot.

Для плагинов главного экрана это отображается в верхней части экрана, справа от кнопок «2D», «3D», «Script», «Game» и «AssetLib».


Dictionary _get_state() virtual const 🔗

Переопределите этот метод, чтобы предоставить данные о состоянии, которые необходимо сохранить, например, положение вида, настройки сетки, сворачивание и т. д. Это используется при сохранении сцены (чтобы состояние сохранялось при её повторном открытии) и для переключения вкладок (чтобы состояние можно было восстановить при возврате вкладки). Эти данные автоматически сохраняются для каждой сцены в файле editstate в папке метаданных редактора. Если вы хотите сохранить глобальные (независимые от сцены) данные редактора для своего плагина, вы можете использовать _get_window_layout().

Используйте _set_state() для восстановления сохранённого состояния.

Примечание: Этот метод не следует использовать для сохранения важных настроек, которые должны сохраняться в проекте.

Примечание: Для корректного сохранения и восстановления состояния необходимо реализовать _get_plugin_name().

func _get_state():
    var state = { "zoom": zoom, "preferred_color": my_color }
    return state

String _get_unsaved_status(for_scene: String) virtual const 🔗

Переопределите этот метод, чтобы предоставить пользовательское сообщение, в котором перечислены несохраненные изменения. Редактор вызовет этот метод при выходе или закрытии сцены и отобразит возвращенную строку в диалоговом окне подтверждения. Возвращает пустую строку, если у плагина нет несохраненных изменений.

При закрытии сцены for_scene — это путь к закрываемой сцене. Вы можете использовать его для обработки встроенных ресурсов в этой сцене.

Если пользователь подтверждает сохранение, перед закрытием редактора будет вызван _save_external_data().

func _get_unsaved_status(for_scene):
    if not unsaved:
        return ""

    if for_scene.is_empty():
        return "Save changes in MyCustomPlugin before closing?"
    else:
        return "Scene %s has changes from MyCustomPlugin. Save before closing?" % for_scene.get_file()

func _save_external_data():
    unsaved = false

Если плагин не имеет изменений, специфичных для сцены, вы можете игнорировать вызовы при закрытии сцен:

func _get_unsaved_status(for_scene):
    if not for_scene.is_empty():
        return ""

void _get_window_layout(configuration: ConfigFile) virtual 🔗

Переопределите этот метод, чтобы предоставить макет GUI плагина или любые другие данные, которые вы хотите сохранить. Это используется для сохранения макета редактора проекта при вызове queue_save_layout() или изменении макета редактора (например, при изменении положения дока). Данные сохраняются в файле editor_layout.cfg в каталоге метаданных редактора.

Используйте _set_window_layout(), чтобы восстановить сохраненный макет.

func _get_window_layout(configuration):
    configuration.set_value("MyPlugin", "window_position", $Window.position)
    configuration.set_value("MyPlugin", "icon_color", $Icon.modulate)

bool _handles(object: Object) virtual const 🔗

Реализуйте эту функцию, если ваш плагин редактирует определенный тип объекта (Ресурс или Узел). Если вы вернете true, то вы получите функции _edit() и _make_visible(), вызванные, когда редактор их запросит. Если вы объявили методы _forward_canvas_gui_input() и _forward_3d_gui_input(), они также будут вызваны.

Примечание: Каждый плагин должен обрабатывать только один тип объектов одновременно. Если плагин обрабатывает больше типов объектов и они редактируются одновременно, это приведет к ошибкам.


bool _has_main_screen() virtual const 🔗

Возвращает true, если это плагин редактора основного экрана (он идет в селекторе рабочей области вместе с 2D, 3D, Script, Game и AssetLib).

Когда выбрана рабочая область плагина, другие плагины основного экрана будут скрыты, но ваш плагин не появится автоматически. Его нужно добавить как дочерний элемент EditorInterface.get_editor_main_screen() и сделать видимым внутри _make_visible().

Используйте _get_plugin_name() и _get_plugin_icon() для настройки внешнего вида кнопки плагина.

var plugin_control

func _enter_tree():
    plugin_control = preload("my_plugin_control.tscn").instantiate()
    EditorInterface.get_editor_main_screen().add_child(plugin_control)
    plugin_control.hide()

func _has_main_screen():
    return true

func _make_visible(visible):
    plugin_control.visible = visible

func _get_plugin_name():
    return "My Super Cool Plugin 3000"

func _get_plugin_icon():
    return EditorInterface.get_editor_theme().get_icon("Node", "EditorIcons")

void _make_visible(visible: bool) virtual 🔗

Эта функция будет вызвана, когда редактору будет предложено стать видимым. Она используется для плагинов, которые редактируют определенный тип объекта.

Помните, что вам придется вручную управлять видимостью всех элементов управления редактора.


PackedStringArray _run_scene(scene: String, args: PackedStringArray) virtual const 🔗

Эта функция вызывается, когда в редакторе собирается воспроизвестись отдельная сцена. args — это список аргументов командной строки, которые будут переданы новому экземпляру Godot; этот список будет заменен списком, возвращаемым этой функцией.

func _run_scene(scene, args):
    args.append("--an-extra-argument")
    return args

Примечание: Текст, выводимый этим методом, не будет виден на панели вывода редактора, если параметр EditorSettings.run/output/always_clear_output_on_play не имеет значения false.


void _save_external_data() virtual 🔗

Этот метод вызывается после того, как редактор сохраняет проект или когда он закрыт. Он просит плагин сохранить отредактированные внешние сцены/ресурсы.


void _set_state(state: Dictionary) virtual 🔗

Восстановите состояние, сохраненное _get_state(). Этот метод вызывается при изменении текущей вкладки сцены в редакторе.

Примечание: Ваш плагин должен реализовывать _get_plugin_name(), иначе он не будет распознан и этот метод не будет вызван.

func _set_state(data):
    zoom = data.get("zoom", 1.0)
    preferred_color = data.get("my_color", Color.WHITE)

void _set_window_layout(configuration: ConfigFile) virtual 🔗

Восстановите макет GUI плагина и данные, сохраненные _get_window_layout(). Этот метод вызывается для каждого плагина при запуске редактора. Используйте предоставленный файл configuration для чтения сохраненных данных.

func _set_window_layout(configuration):
    $Window.position = configuration.get_value("MyPlugin", "window_position", Vector2())
    $Icon.modulate = configuration.get_value("MyPlugin", "icon_color", Color.WHITE)

void add_autoload_singleton(name: String, path: String) 🔗

Добавляет скрипт по адресу path в список автозагрузки как name.


void add_context_menu_plugin(slot: ContextMenuSlot, plugin: EditorContextMenuPlugin) 🔗

Добавляет плагин в контекстное меню. slot — контекстное меню, в которое будет добавлен плагин.

Примечание: Экземпляр плагина может принадлежать только одному слоту контекстного меню.


Button add_control_to_bottom_panel(control: Control, title: String, shortcut: Shortcut = null) 🔗

Устарело: Use add_dock() instead, with EditorDock.default_slot set to DOCK_SLOT_BOTTOM.

Добавляет элемент управления на нижнюю панель (вместе с Вывод, Отладчик, Анимация и т. д.). Возвращает ссылку на кнопку, которая находится вне дерева сцены. Вы можете скрывать/показывать кнопку по мере необходимости. Когда ваш плагин деактивирован, обязательно удалите свой пользовательский элемент управления с помощью remove_control_from_bottom_panel() и освободите его с помощью Node.queue_free().

shortcut — это сочетание клавиш, которое при активации будет переключать видимость нижней панели. Объект сочетания клавиш устанавливается только тогда, когда этот элемент управления добавлен на нижнюю панель.

Примечание Для вдохновения см. стандартные сочетания клавиш нижней панели редактора в настройках редактора. По соглашению, все они используют модификатор Alt.


void add_control_to_container(container: CustomControlContainer, control: Control) 🔗

Добавляет пользовательский элемент управления в контейнер в пользовательском интерфейсе редактора.

Помните, что вам придется самостоятельно управлять видимостью ваших пользовательских элементов управления (и, скорее всего, скрывать их после добавления).

Когда ваш плагин деактивирован, обязательно удалите пользовательский элемент управления с помощью remove_control_from_container() и освободите его с помощью Node.queue_free().


void add_control_to_dock(slot: DockSlot, control: Control, shortcut: Shortcut = null) 🔗

Устарело: Use add_dock() instead.

Добавляет элемент управления в определенный слот дока.

Если док перемещен и пока плагин активен, редактор сохранит позицию дока в последующих сеансах.

Когда ваш плагин деактивирован, обязательно удалите свой пользовательский элемент управления с помощью remove_control_from_docks() и освободите его с помощью Node.queue_free().

При желании вы можете указать параметр сочетания клавиш. При нажатии сочетания клавиш откроет и сфокусирует док.


void add_custom_type(type: String, base: String, script: Script, icon: Texture2D) 🔗

Добавляет пользовательский тип, который появится в списке узлов или ресурсов.

Когда выбран заданный узел или ресурс, будет создан экземпляр базового типа (например, "Node3D", "Control", "Resource"), затем скрипт будет загружен и установлен для этого объекта.

Примечание: Базовый тип — это базовый класс движка, который наследует иерархия классов этого типа, а не родительские классы пользовательских типов.

Вы можете использовать виртуальный метод _handles(), чтобы проверить, редактируется ли ваш пользовательский объект, проверив скрипт или используя ключевое слово is.

Во время выполнения это будет простой объект со скриптом, поэтому эту функцию не нужно вызывать.

Примечание: Пользовательские типы, добавленные таким образом, не являются настоящими классами. Они являются просто вспомогательными для создания узла с определенным скриптом.


void add_debugger_plugin(script: EditorDebuggerPlugin) 🔗

Добавляет Script как плагин отладчика к Debugger. Скрипт должен расширять EditorDebuggerPlugin.


void add_dock(dock: EditorDock) 🔗

Добавляет новую панель Dock.

Когда ваш плагин деактивирован, обязательно удалите свою пользовательскую панель Dock с помощью метода remove_dock() и освободите её с помощью метода Node.queue_free().


void add_export_platform(platform: EditorExportPlatform) 🔗

Регистрирует новый EditorExportPlatform. Экспорт платформ обеспечивает функциональность экспорта на определенную платформу.


void add_export_plugin(plugin: EditorExportPlugin) 🔗

Регистрирует новый EditorExportPlugin. Плагины экспорта используются для выполнения задач при экспорте проекта.

См. add_inspector_plugin() для примера регистрации плагина.


void add_import_plugin(importer: EditorImportPlugin, first_priority: bool = false) 🔗

Регистрирует новый EditorImportPlugin. Импортные плагины используются для импорта пользовательских и неподдерживаемых ресурсов в качестве пользовательского типа Resource.

Если first_priority равен true, новый импортный плагин вставляется первым в списке и имеет приоритет над уже существующими плагинами.

Примечание: Если вы хотите импортировать пользовательские форматы 3D-ресурсов, используйте вместо этого add_scene_format_importer_plugin().

См. add_inspector_plugin() для примера регистрации плагина.


void add_inspector_plugin(plugin: EditorInspectorPlugin) 🔗

Регистрирует новый EditorInspectorPlugin. Плагины инспектора используются для расширения EditorInspector и предоставления пользовательских инструментов настройки для свойств вашего объекта.

Примечание: Всегда используйте remove_inspector_plugin() для удаления зарегистрированного EditorInspectorPlugin, когда ваш EditorPlugin отключен, чтобы предотвратить утечки и непредвиденное поведение.

const MyInspectorPlugin = preload("res://addons/your_addon/path/to/your/script.gd")
var inspector_plugin = MyInspectorPlugin.new()

func _enter_tree():
    add_inspector_plugin(inspector_plugin)

func _exit_tree():
    remove_inspector_plugin(inspector_plugin)

void add_node_3d_gizmo_plugin(plugin: EditorNode3DGizmoPlugin) 🔗

Регистрирует новый EditorNode3DGizmoPlugin. Плагины Gizmo используются для добавления пользовательских гизмо в область предварительного просмотра 3D для Node3D.

См. add_inspector_plugin() для примера регистрации плагина.


void add_resource_conversion_plugin(plugin: EditorResourceConversionPlugin) 🔗

Регистрирует новый EditorResourceConversionPlugin. Плагины преобразования ресурсов используются для добавления пользовательских преобразователей ресурсов в инспектор редактора.

См. EditorResourceConversionPlugin для примера создания плагина преобразования ресурсов.


void add_scene_format_importer_plugin(scene_format_importer: EditorSceneFormatImporter, first_priority: bool = false) 🔗

Регистрирует новый EditorSceneFormatImporter. Импортеры сцен используются для импорта пользовательских форматов 3D-ресурсов в качестве сцен.

Если first_priority равен true, новый плагин импорта вставляется первым в списке и имеет приоритет над уже существующими плагинами.


void add_scene_post_import_plugin(scene_import_plugin: EditorScenePostImportPlugin, first_priority: bool = false) 🔗

Добавьте EditorScenePostImportPlugin. Эти плагины позволяют настраивать процесс импорта 3D-ресурсов, добавляя новые параметры в диалоговые окна импорта.

Если first_priority равен true, новый плагин импорта вставляется первым в списке и имеет приоритет над уже существующими плагинами.


void add_tool_menu_item(name: String, callable: Callable) 🔗

Добавляет пользовательский элемент меню в Проект > Инструменты с именем name]. При щелчке будет вызван предоставленный callable.


void add_tool_submenu_item(name: String, submenu: PopupMenu) 🔗

Добавляет пользовательское подменю PopupMenu в Проект > Инструменты > name. Используйте remove_tool_menu_item() при очистке плагина, чтобы удалить меню.


void add_translation_parser_plugin(parser: EditorTranslationParserPlugin) 🔗

Регистрирует пользовательский плагин анализатора перевода для извлечения переводимых строк из пользовательских файлов.


void add_undo_redo_inspector_hook_callback(callable: Callable) 🔗

Подключает обратный вызов к созданию действия отмены/повтора при изменении свойства в инспекторе. Это позволяет, например, сохранять другие свойства, которые могут быть потеряны при изменении данного свойства.

Обратный вызов должен иметь 4 аргумента: Object undo_redo, Object modified_object, String property и Variant new_value. Это, соответственно, объект UndoRedo, используемый инспектором, текущий измененный объект, имя измененного свойства и новое значение, которое свойство собирается принять.


EditorInterface get_editor_interface() 🔗

Устарело: EditorInterface is a global singleton and can be accessed directly by its name.

Возвращает экземпляр синглтона EditorInterface.


PopupMenu get_export_as_menu() 🔗

Возвращает PopupMenu в разделе Сцена > Экспортировать как....


String get_plugin_version() const 🔗

Укажите версию плагина, объявленную в файле конфигурации plugin.cfg.


ScriptCreateDialog get_script_create_dialog() 🔗

Получает диалог редактора, используемый для создания скриптов.

Примечание: Пользователи могут настроить его перед использованием.

Предупреждение: Удаление и освобождение этого узла сделает часть редактора бесполезной и может привести к сбою.


EditorUndoRedoManager get_undo_redo() 🔗

Получает объект отмены/повтора. Большинство действий в редакторе можно отменить, поэтому используйте этот объект, чтобы убедиться, что это произойдет, когда это того стоит.


void hide_bottom_panel() 🔗

Сворачивает нижнюю панель.


void make_bottom_panel_item_visible(item: Control) 🔗

Делает видимым определенный элемент на нижней панели.


void queue_save_layout() 🔗

Очередь сохранения макета редактора проекта.


void remove_autoload_singleton(name: String) 🔗

Удаляет автозагрузку name из списка.


void remove_context_menu_plugin(plugin: EditorContextMenuPlugin) 🔗

Удаляет указанный плагин контекстного меню.


void remove_control_from_bottom_panel(control: Control) 🔗

Устарело: Use remove_dock() instead.

Удаляет элемент управления с нижней панели. Вам придется вручную Node.queue_free() элемент управления.


void remove_control_from_container(container: CustomControlContainer, control: Control) 🔗

Удаляет элемент управления из указанного контейнера. Вам необходимо вручную Node.queue_free() элемент управления.


void remove_control_from_docks(control: Control) 🔗

Устарело: Use remove_dock() instead.

Удаляет элемент управления из дока. Вам придется вручную Node.queue_free() элемент управления.


void remove_custom_type(type: String) 🔗

Удаляет пользовательский тип, добавленный add_custom_type().


void remove_debugger_plugin(script: EditorDebuggerPlugin) 🔗

Удаляет плагин отладчика с указанным скриптом из отладчика.


void remove_dock(dock: EditorDock) 🔗

Удаляет dock из списка доступных доков. Для его освобождения необходимо вручную вызвать Node.queue_free().


void remove_export_platform(platform: EditorExportPlatform) 🔗

Удаляет экспортную платформу, зарегистрированную add_export_platform().


void remove_export_plugin(plugin: EditorExportPlugin) 🔗

Удаляет плагин экспорта, зарегистрированный add_export_plugin().


void remove_import_plugin(importer: EditorImportPlugin) 🔗

Удаляет плагин импорта, зарегистрированный add_import_plugin().


void remove_inspector_plugin(plugin: EditorInspectorPlugin) 🔗

Удаляет плагин инспектора, зарегистрированный add_inspector_plugin().


void remove_node_3d_gizmo_plugin(plugin: EditorNode3DGizmoPlugin) 🔗

Удаляет плагин gizmo, зарегистрированный add_node_3d_gizmo_plugin().


void remove_resource_conversion_plugin(plugin: EditorResourceConversionPlugin) 🔗

Удаляет плагин преобразования ресурсов, зарегистрированный add_resource_conversion_plugin().


void remove_scene_format_importer_plugin(scene_format_importer: EditorSceneFormatImporter) 🔗

Удаляет импортер формата сцены, зарегистрированный add_scene_format_importer_plugin().


void remove_scene_post_import_plugin(scene_import_plugin: EditorScenePostImportPlugin) 🔗

Удалите EditorScenePostImportPlugin, добавленный с помощью add_scene_post_import_plugin().


void remove_tool_menu_item(name: String) 🔗

Удаляет меню name из Проект > Инструменты.


void remove_translation_parser_plugin(parser: EditorTranslationParserPlugin) 🔗

Удаляет пользовательский плагин парсера перевода, зарегистрированный add_translation_parser_plugin().


void remove_undo_redo_inspector_hook_callback(callable: Callable) 🔗

Удаляет обратный вызов, ранее добавленный add_undo_redo_inspector_hook_callback().


void set_dock_tab_icon(control: Control, icon: Texture2D) 🔗

Устарело: Use EditorDock.dock_icon instead.

Устанавливает значок вкладки для указанного элемента управления в слоте дока. Установка null удаляет значок.


void set_force_draw_over_forwarding_enabled() 🔗

Позволяет вызывать _forward_canvas_force_draw_over_viewport() для 2D-редактора и _forward_3d_force_draw_over_viewport() для 3D-редактора при обновлении их вьюпортов. Вам нужно вызвать этот метод только один раз, и он будет работать постоянно для этого плагина.


void set_input_event_forwarding_always_enabled() 🔗

Используйте этот метод, если вы всегда хотите получать входные данные с экрана 3D-вида внутри _forward_3d_gui_input(). Он может быть особенно полезен, если ваш плагин захочет использовать raycast в сцене.


int update_overlays() const 🔗

Обновляет наложения вьюпорта 2D- и 3D-редактора. Вызывает вызов методов _forward_canvas_draw_over_viewport(), _forward_canvas_force_draw_over_viewport(), _forward_3d_draw_over_viewport() и _forward_3d_force_draw_over_viewport().