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.

EditorPlugin

Успадковує: Node < Object

Успадковано від: GridMapEditorPlugin

Використовується редактором для розширення його функціональності.

Опис

Плагіни використовуються редактором для розширення функціональності. Найпоширенішими типами плагінів є ті, які редагують дану вершину або тип ресурсу, імпорт плагінів і експорт плагінів. Дивись також EditorScript, щоб додати функції до редактора.

Примітка: Деякі імена в цьому класі містять "лівий" або "право" (наприклад, 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) 🔗

Emitted when user changes the workspace (2D, 3D, Script, Game, Asset Store). Also works with custom screens defined by plugins.


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.


Переліки

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

Dock слот, ліва сторона, нижня права (у макеті за замовчуванням входить FileSystem dock).

DockSlot DOCK_SLOT_RIGHT_UL = 4

Дак слот, права сторона, верхній лівий (в розкладі за замовчуванням включає інспектор, Node і історії доки).

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.


enum AfterGUIInput: 🔗

AfterGUIInput AFTER_GUI_INPUT_PASS = 0

Переадресувати InputEvent в інші редактори.

AfterGUIInput AFTER_GUI_INPUT_STOP = 1

Запобігає виходу з інших класів редакторів.

AfterGUIInput AFTER_GUI_INPUT_CUSTOM = 2

Запустіть InputEvent на інші плагіни редактора, крім основного Node3D. Це може бути використана для запобігання зміни вибору вузлів і роботи з суб-гізмосом замість.


Описи методів

void _apply_changes() virtual 🔗

Цей метод називається, коли редактор збирається зберегти проект, перейти на іншу вкладку і т.д. Для забезпечення консистенції необхідно застосувати будь-які зміни, що закінчуються державою.

Це використовується, наприклад, в редакторах шейдера, щоб дозволити плагін знати, що він повинен застосувати код шейдера, написаний користувачем на об'єкт.


bool _build() virtual 🔗

Цей метод називається при запуску проекту редактор. Додаток може виконувати необхідні операції перед виконанням проекту.

Цей метод необхідно повернути болеан. Якщо цей метод повертає false, проект не буде працювати. Запуск здійснюється відразу, тому це також запобігає всіх інших плагінів _build().


void _clear() virtual 🔗

Очистити всі держави і скидати об'єкт, який редагований до нуля. Цей плагін не зберігає в даний час існуючий вузол, або вузол від неправильної сцени.


void _disable_plugin() virtual 🔗

Викликається рушієм, коли користувач вимикає EditorPlugin на вкладці «Плагін» вікна налаштувань проєкту.


void _edit(object: Object) virtual 🔗

Ця функція використовується для плагінів, які редагують певні типи об'єктів (nodes або ресурси). Він запитує редактора для редагування даного об'єкта.

object може бути null, якщо плагін був редагування об'єкта, але не існує вибраного об'єкту, який використовується цим плагіном. Можна використовувати для очищення стану редагування.


void _enable_plugin() virtual 🔗

Увімкніть двигун, коли користувач дозволяє EditorPlugin у вкладці плагіна вікна налаштувань проекту.


void _forward_3d_draw_over_viewport(viewport_control: Control) virtual 🔗

Викликається рушієм, коли оновлюється область перегляду 3D-редактора. viewport_control – це накладання поверх області перегляду, яке можна використовувати для малювання. Ви можете оновити область перегляду вручну, викликавши update_overlays().

[gdscript]
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
[/gdscript]
[csharp]
public override void _Forward3DDrawOverViewport(Control viewportControl)
{
// Намалювати коло в позиції курсора.
viewportControl.DrawCircle(viewportControl.GetLocalMousePosition(), 64, Colors.White);
}

public override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera3D viewportCamera, InputEvent @event)
{
if (@event is InputEventMouseMotion)
{
// Перемалювати область перегляду при переміщенні курсора.
UpdateOverlays();
return EditorPlugin.AfterGuiInput.Stop;
}
return EditorPlugin.AfterGuiInput.Pass;
 }
[/csharp][/codeblocks]

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() реалізовано, а InputEvent відбувається у 3D-окні перегляду. Повернене значення вирішує, чи споживається InputEvent чи пересилається іншим EditorPlugin. Параметри див. AfterGUInput.

# Запобігає досягненню InputEvent інших класів Editor.
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):
    повертає EditorPlugin.AFTER_GUI_INPUT_STOP, якщо подією є InputEventMouseMotion, інакше 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(), крім того, що він тягне за собою все. Корисно, коли потрібен додатковий шар, який показує все інше.

Вам потрібно включити виклик цього методу за допомогою _config_draw_over_forwarding_enabled().


bool _forward_canvas_gui_input(event: InputEvent) virtual 🔗

Викликається, коли в поточній відредагованій сцені є кореневий вузол, _handles() реалізується, а InputEvent відбувається у 2D вікні перегляду. Якщо цей метод повертає true, event перехоплюється цим EditorPlugin, інакше event пересилається до інших класів Editor.

# Запобігає досягненню InputEvent інших класів Editor.
func _forward_canvas_gui_input(подія):
    return true

Цей метод має повернути false, щоб переслати InputEvent до інших класів Editor.

# Споживає InputEventMouseMotion і пересилає інші типи InputEvent.
func _forward_canvas_gui_input(подія):
    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 🔗

Override this method in your plugin to return a Texture2D in order to give it an icon.

For main screen plugins, this appears at the top of the screen, to the right of the "2D", "3D", "Script", "Game", and "Asset Store" buttons.

Ideally, the plugin icon should be white with a transparent background and 16×16 pixels in size.

func _get_plugin_icon():
    # You can use a custom icon:
    return preload("res://addons/my_plugin/my_plugin_icon.svg")
    # Or use a built-in icon:
    return EditorInterface.get_editor_theme().get_icon("Node", "EditorIcons")

String _get_plugin_name() virtual const 🔗

Override this method in your plugin to provide the name of the plugin when displayed in the Godot editor.

For main screen plugins, this appears at the top of the screen, to the right of the "2D", "3D", "Script", "Game", and "Asset Store" buttons.


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):
    is no unsaved:
        return ""

    якщо for_scene.is_empty():
        return "Зберегти зміни в MyCustomPlugin перед закриттям?"
    else:
        return "Сцена %s має зміни з MyCustomPlugin. Зберегти перед закриттям?" % for_scene.get_file()

func _save_external_data():
    unsaved = false

Якщо плагін не має змін, пов’язаних зі сценою, ви можете ігнорувати виклики під час закриття сцени:

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

void _get_window_layout(configuration: ConfigFile) virtual 🔗

Перевизначте цей метод, щоб надати макет графічного інтерфейсу користувача плагіна або будь-яких інших даних, які ви хочете зберегти. Це використовується для збереження макета редактора проекту, коли викликається 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 🔗

Впроваджуйте цю функцію, якщо ваш плагін редагує конкретний тип об'єкта (Resource або Node). Якщо ви повертаєте true, то ви отримаєте функції _edit() і _make_visible(), викликані при зверненні редактора. Якщо ви заявили методи _forward_canvas_gui_input() та _forward_3d_gui_input() вони будуть названі занадто.

Примітка: Кожен плагін повинен обробляти тільки один тип об'єктів одночасно. Якщо плагін обробляє більше типів об'єктів і вони редагуються одночасно, це призведе до помилок.


bool _has_main_screen() virtual const 🔗

Returns true if this is a main screen editor plugin (it goes in the workspace selector together with 2D, 3D, Script, Game, and Asset Store).

When the plugin's workspace is selected, other main screen plugins will be hidden, but your plugin will not appear automatically. It needs to be added as a child of EditorInterface.get_editor_main_screen() and made visible inside _make_visible().

Use _get_plugin_name() and _get_plugin_icon() to customize the plugin button's appearance.

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 🔗

Відновити макет графічного інтерфейсу плагіна та дані, збережені _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.

Додає елемент керування до нижньої панелі (разом із Output, Debug, Animation тощо). Повертає посилання на кнопку, яка знаходиться поза деревом сцени. Ви самі вирішуєте, чи приховувати/показувати кнопку за потреби. Коли ваш плагін деактивовано, обов’язково видаліть свій власний елемент керування за допомогою remove_control_from_bottom_panel() та звільніть його за допомогою Node.queue_free().

shortcut – це ярлик, який при активації перемикатиме видимість нижньої панелі. Об’єкт 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"), потім скрипт буде завантажений і встановлюється на цей об'єкт.

Примітка: Базовий тип є базовим класом двигуна, який цей клас ієрархії у спадкуванні, а не будь-який власний тип батьківських класів.

Ви можете використовувати віртуальний метод method_handles для перевірки, якщо ваш користувальницький об'єкт редагований шляхом перевірки скрипта або використання is.

Під час run-time це буде простий об'єкт з скриптом, щоб ця функція не повинна бути викликана.

Примітка: Користувальницькі типи додано цей спосіб не справжні класи. Вони просто помічник для створення вершини з певним скриптом.


void add_debugger_plugin(script: EditorDebuggerPlugin) 🔗

Додає Script як плагін налагоджувача до налагоджувача. Скрипт має розширювати EditorDebuggerPlugin.


void add_dock(dock: EditorDock) 🔗

Додає новий док.

Коли ваш плагін деактивовано, обов’язково видаліть свій користувацький док за допомогою методу 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. Імпортні плагіни використовуються для імпорту індивідуальних і непідтримуваних активів в якості індивідуального ресурс типу.

Якщо first_priority є true, новий імпортний плагін вставляється першим в списку і бере передові плагіни.

Note: Якщо ви хочете імпортувати користувацькі формати активів 3D add_scene_format_importer_plugin() замість.

Див. add_inspector_plugin() на прикладі як зареєструвати плагін.


void add_inspector_plugin(plugin: EditorInspectorPlugin) 🔗

Реєструє новий EditorInspectorPlugin. Плагіни Inspector використовуються для розширення 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 плагіни використовуються для додавання користувацьких gizmos до 3D попереднього перегляду

Див. 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 submenu Проект > Інструменти > 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 під Scene > Експорт ....


String get_plugin_version() const 🔗

Забезпечити версію плагіна, заявленого в файлі plugin.cfg.


ScriptCreateDialog get_script_create_dialog() 🔗

Отримати діалог редактора, який використовується для створення сценаріїв.

Примітка: Користувачі можуть налаштувати його перед використанням.

Попередження: Видалення та звільняння цього вузла буде надавати частину редактора без використання та може викликати аварійний збій.


EditorUndoRedoManager get_undo_redo() 🔗

Gets the undo/redo об'єкт. Більшість дій редактора може бути ненадійним, тому використовувати цей об'єкт, щоб переконатися, що це відбувається, коли він коштує.


void hide_bottom_panel() 🔗

Мінімізації нижньої панелі.


void make_bottom_panel_item_visible(item: Control) 🔗

Зробіть конкретний елемент у нижній панелі видимим.


void queue_save_layout() 🔗

Збережіть макет редактора проекту.


void remove_autoload_singleton(name: String) 🔗

Видаляє параметр Autoload 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) 🔗

Видаліть користувацький тип, доданий додавання_custom_type().


void remove_debugger_plugin(script: EditorDebuggerPlugin) 🔗

Видалення плагіна debugger з даним скриптом від Debugger.


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(). Це може бути особливо корисною, якщо ваш плагін буде потрібно використовувати прорекламу на сцені.


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(), щоб бути викликаними.