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.
Checking the stable version of the documentation...
EditorDebuggerPlugin
Eredita: RefCounted < Object
Una classe di base per implementare estensioni del debugger.
Descrizione
EditorDebuggerPlugin fornisce funzioni riguardo il debugger dal lato dell'editor.
Per interagire con il debugger, un'istanza di questa classe deve essere aggiunta all'editor tramite EditorPlugin.add_debugger_plugin().
Una volta aggiunta, il callback _setup_session() verrà chiamato per ogni EditorDebuggerSession disponibile per il plugin e quando ne vengono create di nuove (le sessioni potrebbero essere inattive durante questa fase).
È possibile recuperare le EditorDebuggerSession disponibili tramite get_sessions() o ottenerne una specifica tramite get_session().
@tool
extends EditorPlugin
class ExampleEditorDebugger extends EditorDebuggerPlugin:
func _has_capture(prefix):
# Restituisci true se desideri gestire il messaggio con questo prefisso.
return prefix == "my_plugin"
func _capture(message, data, session_id):
if message == "my_plugin:ping":
get_session(session_id).send_message("my_plugin:echo", data)
return true
return false
func _setup_session(session_id):
# Aggiunge una nuova scheda nell'interfaccia utente della sessione del debugger contenente un'etichetta.
var label = Label.new()
label.name = "Example plugin"
label.text = "Example plugin"
var session = get_session(session_id)
# Ascolta i segnali di avvio e arresto della sessione.
session.started.connect(func (): print("Session avviata"))
session.stopped.connect(func (): print("Sessione arrestata"))
session.add_session_tab(label)
var debugger = ExampleEditorDebugger.new()
func _enter_tree():
add_debugger_plugin(debugger)
func _exit_tree():
remove_debugger_plugin(debugger)
Per connettersi dal lato del gioco in esecuzione, usa il singleton EngineDebugger:
extends Node
func _ready():
EngineDebugger.register_message_capture("my_plugin", _capture)
EngineDebugger.send_message("my_plugin:ping", ["test"])
func _capture(message, data):
# Nota che il prefisso "my_plugin:" non è utilizzato qui.
if message == "echo":
prints("Eco ricevuto:", data)
return true
return false
Nota: Mentre il gioco è in esecuzione, @GlobalScope.print() e funzioni simili chiamate nell'editor non stampano nulla, il log di output stampa solo i messaggi del gioco.
Metodi
void |
_breakpoint_set_in_tree(script: Script, line: int, enabled: bool) virtual |
void |
_breakpoints_cleared_in_tree() virtual |
_capture(message: String, data: Array, session_id: int) virtual |
|
void |
_goto_script_line(script: Script, line: int) virtual |
_has_capture(capture: String) virtual const |
|
void |
_setup_session(session_id: int) virtual |
get_session(id: int) |
|
Descrizioni dei metodi
void _breakpoint_set_in_tree(script: Script, line: int, enabled: bool) virtual 🔗
Sovrascrivi questo metodo per essere notificato quando viene impostato un punto d'interruzione nell'editor.
void _breakpoints_cleared_in_tree() virtual 🔗
Sovrascrivi questo metodo per essere notificato quando tutti i punti d'interruzione vengono cancellati nell'editor.
bool _capture(message: String, data: Array, session_id: int) virtual 🔗
Sovrascrivi questo metodo per elaborare i messaggi in arrivo. Il session_id è l'ID dell'EditorDebuggerSession che ha ricevuto il messaggio. Usa get_session() per recuperare la sessione. Questo metodo dovrebbe restituire true se il messaggio viene riconosciuto.
void _goto_script_line(script: Script, line: int) virtual 🔗
Sovrascrivi questo metodo per essere notificato quando viene cliccata una riga con un punto d'interruzione nel pannello dei punti d'interruzione del debugger.
bool _has_capture(capture: String) virtual const 🔗
Sovrascrivi questo metodo per abilitare la ricezione di messaggi dal debugger. Se capture è "my_message", i messaggi che iniziano con "my_message:" saranno passati al metodo _capture().
void _setup_session(session_id: int) virtual 🔗
Sovrascrivi questo metodo per essere notificato ogni volta che viene creato un nuovo EditorDebuggerSession. Nota che la sessione potrebbe essere inattiva durante questa fase.
EditorDebuggerSession get_session(id: int) 🔗
Restituisce l'EditorDebuggerSession con il id fornito.
Restituisce un array di EditorDebuggerSession attualmente disponibili per quest'estensione del debugger.
Nota: Le sessioni nell'array potrebbero essere inattive, controlla il loro stato tramite EditorDebuggerSession.is_active().