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

Eredita: Node < Object

Ereditato da: GridMapEditorPlugin

Utilizzato dall'editor per estendere le sue funzionalità.

Descrizione

Le estensioni sono usate dall'editor per estendere le funzionalità. I tipi più comuni di estensioni sono quelle che modificano un determinato nodo o tipo di risorsa, quelle di importazione ed esportazione. Vedi anche EditorScript per aggiungere funzioni all'editor.

Nota: Alcuni nomi in questa classe contengono "left" o "right" (ad esempio DOCK_SLOT_LEFT_UL). Queste API presuppongono un layout da sinistra a destra e sarebbero inverse se si usasse un layout da destra a sinistra. Questi nomi rimangono per motivi di compatibilità.

Tutorial

Metodi

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


Segnali

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() 🔗

Deprecato: Use ProjectSettings.settings_changed instead.

Emesso quando qualunque impostazione del progetto viene modificata.


resource_saved(resource: Resource) 🔗

Emesso quando la risorsa resource è stata salvata su disco. Vedi anche scene_saved.


scene_changed(scene_root: Node) 🔗

Emesso quando la scena viene modificata nell'editor. L'argomento restituirà il nodo radice della scena che è appena diventata attiva. Se questa scena è nuova e vuota, l'argomento sarà null.


scene_closed(filepath: String) 🔗

Emesso quando l'utente chiude una scena. L'argomento è un percorso file alla scena chiusa.


scene_saved(filepath: String) 🔗

Emesso quando una scena è stata salvata su disco. L'argomento è un percorso file alla scena salvata. Vedi anche resource_saved.


Enumerazioni

enum CustomControlContainer: 🔗

CustomControlContainer CONTAINER_TOOLBAR = 0

Barra degli strumenti dell'editor principale, accanto ai pulsanti di riproduzione.

CustomControlContainer CONTAINER_SPATIAL_EDITOR_MENU = 1

Barra degli strumenti visualizzata quando l'editor 3D è attivo.

CustomControlContainer CONTAINER_SPATIAL_EDITOR_SIDE_LEFT = 2

Barra laterale sinistra dell'editor 3D.

CustomControlContainer CONTAINER_SPATIAL_EDITOR_SIDE_RIGHT = 3

Barra laterale destra dell'editor 3D.

CustomControlContainer CONTAINER_SPATIAL_EDITOR_BOTTOM = 4

Pannello inferiore dell'editor 3D.

CustomControlContainer CONTAINER_CANVAS_EDITOR_MENU = 5

Barra degli strumenti visualizzata quando l'editor 2D è attivo.

CustomControlContainer CONTAINER_CANVAS_EDITOR_SIDE_LEFT = 6

Barra laterale sinistra dell'editor 2D.

CustomControlContainer CONTAINER_CANVAS_EDITOR_SIDE_RIGHT = 7

Barra laterale destra dell'editor 2D.

CustomControlContainer CONTAINER_CANVAS_EDITOR_BOTTOM = 8

Pannello inferiore dell'editor 2D.

CustomControlContainer CONTAINER_INSPECTOR_BOTTOM = 9

Sezione inferiore dell'Ispettore.

CustomControlContainer CONTAINER_PROJECT_SETTING_TAB_LEFT = 10

Scheda della finestra di dialogo delle Impostazioni del progetto, a sinistra delle altre schede.

CustomControlContainer CONTAINER_PROJECT_SETTING_TAB_RIGHT = 11

Scheda della finestra di dialogo delle Impostazioni del progetto, a destra delle altre schede.


enum DockSlot: 🔗

DockSlot DOCK_SLOT_NONE = -1

The dock is closed.

DockSlot DOCK_SLOT_LEFT_UL = 0

Slot di pannelli, lato sinistro, in alto a sinistra (vuoto nel layout predefinito).

DockSlot DOCK_SLOT_LEFT_BL = 1

Slot di pannelli, lato sinistro, in basso a sinistra (vuoto nel layout predefinito).

DockSlot DOCK_SLOT_LEFT_UR = 2

Slot di pannelli, lato sinistro, in alto a destra (nel layout predefinito include i pannelli Scena e Importazione).

DockSlot DOCK_SLOT_LEFT_BR = 3

Slot di pannelli, lato sinistro, in basso a destra (nel layout predefinito include il pannello del FileSystem).

DockSlot DOCK_SLOT_RIGHT_UL = 4

Slot di pannelli, lato destro, in alto a sinistra (nel layout predefinito include i pannelli dell'Ispettore, di Nodo e della Cronologia).

DockSlot DOCK_SLOT_RIGHT_BL = 5

Slot di pannelli, lato destro, in basso a sinistra (vuoto nel layout predefinito).

DockSlot DOCK_SLOT_RIGHT_UR = 6

Slot di pannelli, lato destro, in alto a destra (vuoto nel layout predefinito).

DockSlot DOCK_SLOT_RIGHT_BR = 7

Slot di pannelli, lato destro, in basso a destra (vuoto nel layout predefinito).

DockSlot DOCK_SLOT_BOTTOM = 8

Bottom panel.

DockSlot DOCK_SLOT_MAX = 9

Rappresenta la dimensione dell'enumerazione DockSlot.


enum AfterGUIInput: 🔗

AfterGUIInput AFTER_GUI_INPUT_PASS = 0

Inoltra l'InputEvent ad altri EditorPlugin.

AfterGUIInput AFTER_GUI_INPUT_STOP = 1

Impedisce all'InputEvent di raggiungere altre classi dell'Editor.

AfterGUIInput AFTER_GUI_INPUT_CUSTOM = 2

Passa l'InputEvent ad altre estensioni dell'editor, eccetto quella principale di Node3D. Questo può essere usato per impedire modifiche alla selezione del nodo e lavorare invece con i sotto-gizmo.


Descrizioni dei metodi

void _apply_changes() virtual 🔗

Questo metodo viene chiamato quando l'editor sta per salvare il progetto, passare a un'altra scheda, ecc. Chiede all'estensione di applicare eventuali modifiche di stato in sospeso per garantire una certa coerenza.

È utilizzato, ad esempio, negli editor di shader per far sapere all'estensione che deve applicare il codice shader scritto dall'utente all'oggetto.


bool _build() virtual 🔗

Questo metodo viene chiamato quando l'editor sta per avviare il progetto. L'estensione può quindi eseguire le operazioni richieste prima che il progetto sia avviato.

Questo metodo deve restituire un valore booleano. Se questo metodo restituisce false, il progetto non sarà avviato. L'avvio è interrotto immediatamente, quindi ciò impedisce anche l'esecuzione di tutti i metodi _build() delle altre estensioni.


void _clear() virtual 🔗

Cancella tutti gli stati e reimposta a zero l'oggetto modificato. Ciò assicura che l'estensione non continui a modificare un nodo esistente o un nodo dalla scena sbagliata.


void _disable_plugin() virtual 🔗

Chiamato dal motore quando l'utente disabilita l'EditorPlugin nella scheda delle Estensioni nella finestra delle impostazioni del progetto.


void _edit(object: Object) virtual 🔗

Questa funzione è usata per le estensioni che modificano tipi di oggetti specifici (nodi o risorse). Richiede all'editor di modificare l'oggetto specificato.

object può essere null se l'estensione stava modificando un oggetto, ma non c'è più alcun oggetto selezionato gestito da questa estensione. Ciò può essere usato per ripulire lo stato di modifica.


void _enable_plugin() virtual 🔗

Chiamato dal motore quando l'utente abilita l'EditorPlugin nella scheda Estensioni della finestra delle Impostazioni del progetto.


void _forward_3d_draw_over_viewport(viewport_control: Control) virtual 🔗

Chiamato dal motore quando la viewport dell'editor 3D viene aggiornata. viewport_control è un overlay sopra la viewport è si può utilizzare per disegnare. È possibile aggiornare manualmente la viewport chiamando update_overlays().

func _forward_3d_draw_over_viewport(overlay):
    # Disegna un cerchio nella posizione del cursore.
    overlay.draw_circle(overlay.get_local_mouse_position(), 64, Color.WHITE)

func _forward_3d_gui_input(camera, event):
    if event is InputEventMouseMotion:
        # Ridisegna la viewport quando il cursore viene spostato.
        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 🔗

Questo metodo è identico a _forward_3d_draw_over_viewport(), eccetto che disegna sopra tutto. Utile quando si desidera di un livello aggiuntivo che si mostra sopra qualsiasi altra cosa.

È necessario abilitare la chiamata di questo metodo tramite set_force_draw_over_forwarding_enabled().


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

Chiamato quando c'è un nodo radice nella scena attualmente modificata, _handles() è implementato e si verifica un InputEvent nella viewport 3D. Il valore restituito decide se InputEvent viene consumato o inoltrato ad altri EditorPlugin. Vedi AfterGUIInput per le opzioni.

# Impedisce all'InputEvent di raggiungere altre classi dell'Editor.
func _forward_3d_gui_input(camera, event):
    return EditorPlugin.AFTER_GUI_INPUT_STOP

Questo metodo deve restituire AFTER_GUI_INPUT_PASS per inoltrare l'InputEvent ad altre classi dell'Editor.

# Consuma gli InputEventMouseMotion e inoltra gli altri tipi di 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 🔗

Chiamato dal motore quando viene aggiornata la viewport dell'editor 2D. viewport_control è un overlay sopra la viewport è si può utilizzare per disegnare. È possibile aggiornare manualmente la viewport chiamando update_overlays().

func _forward_canvas_draw_over_viewport(overlay):
    # Disegna un cerchio nella posizione del cursore.
    overlay.draw_circle(overlay.get_local_mouse_position(), 64, Color.WHITE)

func _forward_canvas_gui_input(event):
    if event is InputEventMouseMotion:
        # Ridisegna la viewport quando il cursore viene spostato.
        update_overlays()
        return true
    return false

void _forward_canvas_force_draw_over_viewport(viewport_control: Control) virtual 🔗

Questo metodo è identico a _forward_canvas_draw_over_viewport(), eccetto che disegna sopra tutto. Utile quando si desidera di un livello aggiuntivo che si mostra sopra qualsiasi altra cosa.

È necessario abilitare la chiamata di questo metodo tramite set_force_draw_over_forwarding_enabled().


bool _forward_canvas_gui_input(event: InputEvent) virtual 🔗

Chiamato quando c'è un nodo radice nella scena attualmente modificata, _handles() è implementato e si verifica un InputEvent nella viewport 2D. Se questo metodo restituisce true, event viene intercettato da questo EditorPlugin, altrimenti event viene inoltrato ad altre classi dell'Editor.

# Impedisce all'InputEvent di raggiungere altre classi dell'Editor.
func _forward_canvas_gui_input(event):
    return true

Questo metodo deve restituire false per inoltrare l'InputEvent ad altre classi dell'Editor.

# Consuma gli InputEventMouseMotion e inoltra gli altri tipi di InputEvent.
func _forward_canvas_gui_input(event):
    if (event is InputEventMouseMotion):
        return true
    return false

PackedStringArray _get_breakpoints() virtual const 🔗

Questo è per gli editor che modificano oggetti basati su script. È possibile restituire un elenco di punti di interruzione nel formato (script:riga), ad esempio: res://percorso_dello_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 🔗

Sovrascrivi questo metodo per fornire i dati di stato che si desidera salvare, come posizione della vista, impostazioni della griglia, pannelli compressi, ecc. Questo è utilizzato quando si salva la scena (in modo che lo stato sia mantenuto quando la si riapre) e per cambiare scheda (in modo che lo stato possa essere ripristinato quando si passa alla scheda). Questi dati sono salvati automaticamente per ogni scena in un file editstate nella cartella dei metadati dell'editor. Se si desidera memorizzare i dati dell'editor globali (indipendenti dalla scena) per l'estensione, è possibile usare _get_window_layout().

Usa _set_state() per ripristinare lo stato salvato.

Nota: Questo metodo non dovrebbe essere utilizzato per salvare impostazioni importanti che dovrebbero persistere con il progetto.

Nota: È necessario implementare _get_plugin_name() affinché lo stato sia memorizzato e ripristinato correttamente.

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

String _get_unsaved_status(for_scene: String) virtual const 🔗

Sovrascrivi questo metodo per fornire un messaggio personalizzato che elenca le modifiche non salvate. L'editor chiamerà questo metodo quando esce o chiude una scena e visualizzerà la stringa restituita in una finestra di dialogo di conferma. Restituisce una stringa vuota se l'estensione non ha modifiche non salvate.

Quando si chiude una scena, for_scene è il percorso per la scena che si sta chiudendo. Si può usare per gestire le risorse integrate in quella scena.

Se l'utente conferma il salvataggio, sarà chiamato _save_external_data(), prima di chiudere l'editor.

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

    if for_scene.is_empty():
        return "Salvare le modifiche in MyCustomPlugin prima di chiudere?"
    else:
        return "La scena %s ha modifiche da MyCustomPlugin. Salvare prima di chiudere?" % for_scene.get_file()

func _save_external_data():
    unsaved = false

Se l'estensione non ha modifiche specifiche per la scena, è possibile ignorare le chiamate quando si chiudono le scene:

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

void _get_window_layout(configuration: ConfigFile) virtual 🔗

Sovrascrivi questo metodo per fornire il layout nell'interfaccia utente dell'estensione o qualsiasi altro dato che si desidera memorizzare. Questo è utilizzato per salvare il layout dell'editor del progetto quando viene chiamato queue_save_layout() o il layout dell'editor è stato modificato (ad esempio cambiando la posizione di un pannello). I dati sono memorizzati nel file editor_layout.cfg nella cartella dei metadati dell'editor.

Utilizza _set_window_layout() per ripristinare il layout salvato.

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 🔗

Implementa questa funzione se la tua estensione modifica un tipo specifico di oggetto (risorsa o nodo). Se restituisci true, le funzioni _edit() e _make_visible() saranno chiamate quando l'editor le richiede. Se i metodi _forward_canvas_gui_input() e _forward_3d_gui_input() sono stati implementati, anche questi saranno chiamati.

Nota: Ogni estensione dovrebbe gestire solo un tipo di oggetto alla volta. Se un'estensione gestisce più tipi di oggetti e sono modificati allo stesso tempo, si verificheranno errori.


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 🔗

Questa funzione sarà chiamata quando si richiede all'editor di diventare visibile. È utilizzata per le estensioni che modificano un tipo di oggetto specifico.

Ricorda che è necessario gestire manualmente la visibilità di tutti i controlli dell'editor.


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

This function is called when an individual scene is about to be played in the editor. args is a list of command line arguments that will be passed to the new Godot instance, which will be replaced by the list returned by this function.

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

Note: Text that is printed in this method will not be visible in the editor's Output panel unless EditorSettings.run/output/always_clear_output_on_play is false.


void _save_external_data() virtual 🔗

Questo metodo viene chiamato dopo che l'editor salva il progetto o quando viene chiuso. Chiede al plugin di salvare le scene/risorse esterne modificate.


void _set_state(state: Dictionary) virtual 🔗

Ripristina lo stato salvato da _get_state(). Questo metodo è chiamato quando la scheda della scena attuale è modificata nell'editor.

Nota: La tua estensione deve implementare _get_plugin_name(), altrimenti non sarà riconosciuta e questo metodo non sarà chiamato.

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 🔗

Ripristina il layout dell'interfaccia utente dell'estensione e i dati salvati da _get_window_layout(). Questo metodo è chiamato per ogni estensione all'avvio dell'editor. Utilizza il file configuration fornito per leggere i dati salvati.

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) 🔗

Aggiunge uno script nel percorso path all'elenco degli Autoload, con il nome name.


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

Aggiunge un'estensione al menu contestuale. slot è il menu contestuale in cui sarà aggiunta l'estensione.

Nota: Un'istanza d'estensione può appartenere solo a un singolo slot del menu contestuale.


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

Deprecato: Use add_dock() instead, with EditorDock.default_slot set to DOCK_SLOT_BOTTOM.

Aggiunge un controllo al pannello inferiore (insieme a Output, Debug, Animazione, ecc.). Restituisce un riferimento a un pulsante che è fuori dall'albero di scene. Sta a te nascondere/mostrare il pulsante quando necessario. Quando l'estensione è disattivata, assicurati di rimuovere il tuo controllo personalizzato con remove_control_from_bottom_panel() e liberarlo con Node.queue_free().

shortcut è una scorciatoia che, una volta attivata, cambia la visibilità del pannello inferiore. L'oggetto scorciatoia viene impostato solo quando questo controllo viene aggiunto al pannello inferiore.

Note Vedi i tasti di scelta rapida predefiniti del pannello inferiore nelle Impostazioni dell'editor per ispirazione. Per convenzione, usano tutti il modificatore Alt.


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

Aggiunge un controllo personalizzato a un contenitore nell'interfaccia utente dell'editor.

Ricorda che è necessario gestire manualmente la visibilità dei propri controlli personalizzati (e probabilmente nasconderli dopo averli aggiunti).

Quando l'estensione viene disattivata, assicurarsi di rimuovere il controllo personalizzato con remove_control_from_container() e liberarlo con Node.queue_free().


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

Deprecato: Use add_dock() instead.

Aggiunge il controllo a uno slot specifico di pannello.

Se il pannello viene riposizionato e finché l'estensione è attiva, l'editor salverà la posizione del pannello nelle sessioni successive.

Quando la propria estensione viene disattivata, assicurarsi di rimuovere il controllo personalizzato con remove_control_from_docks() e liberarlo con Node.queue_free().

Facoltativamente, è possibile specificare un parametro di scelta rapida. Quando viene premuta, questa aprirà e focalizzerà il pannello.


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

Aggiunge un tipo personalizzato, che apparirà nell'elenco di nodi o di risorse.

Quando viene selezionato un certo nodo o risorsa, verrà istanziato il tipo di base (ad esempio "Node3D", "Control", "Resource"), quindi lo script verrà caricato e impostato su questo oggetto.

Nota: Il tipo di base è la classe base del motore che eredita la gerarchia di classi di questo tipo, non alcuna classe padre di tipo personalizzato.

Puoi usare il metodo virtuale _handles() per verificare se il tuo oggetto personalizzato è in fase di modifica verificato lo script o tramite la parola chiave is.

Durante l'esecuzione, questo sarà un semplice oggetto con uno script, quindi questa funzione non deve essere chiamata.

Nota: I tipi personalizzati aggiunti in questo modo non sono classi vere. Sono solo un aiuto per creare un nodo con uno script specifico.


void add_debugger_plugin(script: EditorDebuggerPlugin) 🔗

Aggiunge uno Script come estensione di debugger al Debugger. Lo script deve estendere EditorDebuggerPlugin.


void add_dock(dock: EditorDock) 🔗

Aggiunge un nuovo pannello.

Quando la propria estensione viene disattivata, assicurarsi di rimuovere il pannello personalizzato con remove_dock() e liberarlo con Node.queue_free().


void add_export_platform(platform: EditorExportPlatform) 🔗

Registra un nuovo EditorExportPlatform. Le piattaforme di esportazione forniscono funzionalità di esportazione verso la piattaforma specifica.


void add_export_plugin(plugin: EditorExportPlugin) 🔗

Registra un nuovo EditorExportPlugin. Le estensioni di esportazione servono per effettuare attività quando il progetto viene esportato.

Vedi add_inspector_plugin() per un esempio di come registrare un'estensione.


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

Registra un nuovo EditorImportPlugin. Le estensioni di importazione servono per importare contenuti personalizzati e non supportati come un tipo di Resource personalizzato.

Se first_priority è true, la nuovo estensione di importazione viene inserita per prima nell'elenco e ha la precedenza sulle estensioni preesistenti.

Nota: Se vuoi importare formati di contenuti 3D personalizzati usa invece add_scene_format_importer_plugin().

Vedi add_inspector_plugin() per un esempio di come registrare un'estensione.


void add_inspector_plugin(plugin: EditorInspectorPlugin) 🔗

Registra un nuovo EditorInspectorPlugin. Le estensioni dell'Ispettore servono per estendere EditorInspector e fornire strumenti di configurazione personalizzati per le proprietà del tuo oggetto.

Nota: Usa sempre remove_inspector_plugin() per rimuovere l'EditorInspectorPlugin registrato quando il tuo EditorPlugin è disabilitato per evitare perdite di memoria e comportamenti imprevisti.

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) 🔗

Registra un nuovo EditorNode3DGizmoPlugin. Le estensioni dei gizmo servono per aggiungere gizmo personalizzati alla viewport di anteprima 3D per un Node3D.

Vedi add_inspector_plugin() per un esempio di come registrare un'estensione.


void add_resource_conversion_plugin(plugin: EditorResourceConversionPlugin) 🔗

Registra un nuovo EditorResourceConversionPlugin. Le estensioni di conversione delle risorse servono per aggiungere convertitori di risorse personalizzati all'ispettore dell'editor.

Vedi EditorResourceConversionPlugin per un esempio di come creare un'estensione di conversione delle risorse.


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

Registra un nuovo EditorSceneFormatImporter. Gli importatori di scene servono per importare formati di contenuti 3D personalizzati come scene.

Se first_priority è true, la nuovo estensione di importazione viene inserita per prima nell'elenco e ha la precedenza sulle estensioni preesistenti.


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

Aggiungi un EditorScenePostImportPlugin. Queste estensioni consentono di personalizzare il processo di importazione delle risorse 3D, aggiungendo nuove opzioni alle finestre di dialogo di importazione.

Se first_priority è true, la nuovo estensione di importazione viene inserita per prima nell'elenco e ha la precedenza sulle estensioni preesistenti.


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

Aggiunge una voce di menù personalizzata a Progetto > Strumenti denominata name. Quando viene cliccata, verrà chiamato il callable fornito.


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

Aggiunge un sottomenu PopupMenu personalizzato in Progetto > Strumenti > denominato name. Utilizza remove_tool_menu_item() durante la pulizia dell'estensione per rimuovere il menu.


void add_translation_parser_plugin(parser: EditorTranslationParserPlugin) 🔗

Registers a custom translation parser plugin for extracting translatable strings from custom files.


void add_undo_redo_inspector_hook_callback(callable: Callable) 🔗

Aggancia un callback alla creazione dell'azione annulla/ripristina quando una proprietà viene modificata nell'ispettore. Ciò consente, ad esempio, di salvare altre proprietà che potrebbero essere perse quando una determinata proprietà viene modificata.

Il callback deve avere 4 argomenti: Object undo_redo, Object modified_object, String property e Variant new_value. Sono, rispettivamente, l'oggetto UndoRedo utilizzato dall'ispettore, l'oggetto attualmente modificato, il nome della proprietà modificata e il nuovo valore che la proprietà sta per assumere.


EditorInterface get_editor_interface() 🔗

Deprecato: EditorInterface is a global singleton and can be accessed directly by its name.

Restituisce l'istanza del singleton EditorInterface.


PopupMenu get_export_as_menu() 🔗

Restituisce il PopupMenu in Scena > Esporta come....


String get_plugin_version() const 🔗

Fornisce la versione dell'estensione dichiarata nel file di configurazione plugin.cfg.


ScriptCreateDialog get_script_create_dialog() 🔗

Ottiene la finestra di dialogo dell'editor utilizzata per creare script.

Nota: Gli utenti possono configurarla prima dell'uso.

Attenzione: Rimuovere e liberare questo nodo renderà inutile una parte dell'editor e potrebbero causare un arresto anomalo.


EditorUndoRedoManager get_undo_redo() 🔗

Ottiene l'oggetto annulla/ripristina. La maggior parte delle azioni nell'editor possono essere annullate, quindi usa questo oggetto per assicurarti che ciò accada quando è necessario.


void hide_bottom_panel() 🔗

Minimizza il pannello inferiore.


void make_bottom_panel_item_visible(item: Control) 🔗

Rende visibile un elemento specifico nel pannello inferiore.


void queue_save_layout() 🔗

Accoda il salvataggio della disposizione nell'editor del progetto.


void remove_autoload_singleton(name: String) 🔗

Rimuove l'Autoload denominato name dalla lista.


void remove_context_menu_plugin(plugin: EditorContextMenuPlugin) 🔗

Rimuove l'estensione di menu contestuale specificata.


void remove_control_from_bottom_panel(control: Control) 🔗

Deprecato: Use remove_dock() instead.

Rimuove il controllo dal pannello inferiore. Bisogna chiamare manualmente Node.queue_free() per liberare il controllo.


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

Rimuove il controllo dal contenitore specificato. Bisogna chiamare manualmente Node.queue_free() per liberare il controllo.


void remove_control_from_docks(control: Control) 🔗

Deprecato: Use remove_dock() instead.

Rimuove il controllo dal pannello. Bisogna chiamare manualmente Node.queue_free() per liberare il controllo.


void remove_custom_type(type: String) 🔗

Rimuove un tipo personalizzato aggiunto da add_custom_type().


void remove_debugger_plugin(script: EditorDebuggerPlugin) 🔗

Rimuove l'estensione del debugger con lo script specificato dal Debugger.


void remove_dock(dock: EditorDock) 🔗

Removes dock from the available docks. You should manually call Node.queue_free() to free it.


void remove_export_platform(platform: EditorExportPlatform) 🔗

Rimuove una piattaforma di esportazione registrata da add_export_platform().


void remove_export_plugin(plugin: EditorExportPlugin) 🔗

Rimuove un'estensione di esportazione registrata da add_export_plugin().


void remove_import_plugin(importer: EditorImportPlugin) 🔗

Rimuove un'estensione di importazione registrata da add_import_plugin().


void remove_inspector_plugin(plugin: EditorInspectorPlugin) 🔗

Rimuove un'estensione dell'ispettore registrata da add_import_plugin().


void remove_node_3d_gizmo_plugin(plugin: EditorNode3DGizmoPlugin) 🔗

Rimuove un'estensione gizmo registrata da add_node_3d_gizmo_plugin().


void remove_resource_conversion_plugin(plugin: EditorResourceConversionPlugin) 🔗

Rimuove un'estensione di conversione delle risorse registrato da add_resource_conversion_plugin().


void remove_scene_format_importer_plugin(scene_format_importer: EditorSceneFormatImporter) 🔗

Rimuove un importatore di formati di scena registrato da add_scene_format_importer_plugin().


void remove_scene_post_import_plugin(scene_import_plugin: EditorScenePostImportPlugin) 🔗

Rimuovere l'EditorScenePostImportPlugin, aggiunto con add_scene_post_import_plugin().


void remove_tool_menu_item(name: String) 🔗

Rimuove l'opzione name dal menu Progetto > Strumenti.


void remove_translation_parser_plugin(parser: EditorTranslationParserPlugin) 🔗

Rimuove un'estensione di elaborazione personalizzata della traduzione registrata da add_translation_parser_plugin().


void remove_undo_redo_inspector_hook_callback(callable: Callable) 🔗

Rimuove un callback aggiunto in precedenza da add_undo_redo_inspector_hook_callback().


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

Deprecato: Use EditorDock.dock_icon instead.

Imposta l'icona della scheda per il Control specificato in una casella di pannello. Impostare null rimuove l'icona.


void set_force_draw_over_forwarding_enabled() 🔗

Abilita la chiamata di _forward_canvas_force_draw_over_viewport() per l'editor 2D e _forward_3d_force_draw_over_viewport() per l'editor 3D quando le loro viewport vengono aggiornate. Bisogna chiamare questo metodo solo una volta e funzionerà in modo permanente per quest'estensione.


void set_input_event_forwarding_always_enabled() 🔗

Usa questo metodo se vuoi sempre ricevere input dalla schermata di visualizzazione 3D all'interno di _forward_3d_gui_input(). Potrebbe essere particolarmente utile se il tuo plugin desidera utilizzare i raycast nella scena.


int update_overlays() const 🔗

Aggiorna le sovrapposizioni della viewport dell'editor 2D e 3D. Fa in modo che vengano chiamati i metodi _forward_canvas_draw_over_viewport(), _forward_canvas_force_draw_over_viewport(), _forward_3d_draw_over_viewport() e _forward_3d_force_draw_over_viewport().