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
Наследует: RefCounted < Object
Базовый класс для реализации плагинов отладчика.
Описание
EditorDebuggerPlugin предоставляет функции, связанные с редакторской стороной отладчика.
Для взаимодействия с отладчиком экземпляр этого класса должен быть добавлен в редактор с помощью EditorPlugin.add_debugger_plugin().
После добавления обратный вызов _setup_session() будет вызываться для каждого EditorDebuggerSession, доступного плагину, и при создании новых (сеансы могут быть неактивны на этом этапе).
Вы можете получить доступные EditorDebuggerSession с помощью get_sessions() или получить определенный с помощью get_session().
@tool
extends EditorPlugin
class ExampleEditorDebugger extends EditorDebuggerPlugin:
func _has_capture(capture):
# Верните true, если вы хотите обрабатывать сообщения с префиксом «my_plugin:».
return capture == "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):
# Добавьте новую вкладку в пользовательский интерфейс сеанса отладчика, содержащую метку.
var label = Label.new()
label.name = "Example plugin" # Will be used as the tab title.
label.text = "Example plugin"
var session = get_session(session_id)
# Прослушивает сигналы начала и окончания сеанса.
session.started.connect(func (): print("Session started"))
session.stopped.connect(func (): print("Session stopped"))
session.add_session_tab(label)
var debugger = ExampleEditorDebugger.new()
func _enter_tree():
add_debugger_plugin(debugger)
func _exit_tree():
remove_debugger_plugin(debugger)
Для подключения на стороне запущенной игры используйте синглтон EngineDebugger:
extends Node
func _ready():
EngineDebugger.register_message_capture("my_plugin", _capture)
EngineDebugger.send_message("my_plugin:ping", ["test"])
func _capture(message, data):
# Обратите внимание, что префикс «my_plugin:» здесь не используется.
if message == "echo":
prints("Echo received:", data)
return true
return false
Примечание: Во время работы игры @GlobalScope.print() и подобные функции, вызываемые в редакторе, ничего не печатают, в журнале вывода печатаются только игровые сообщения.
Методы
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) |
|
Описания метода
void _breakpoint_set_in_tree(script: Script, line: int, enabled: bool) virtual 🔗
Переопределите этот метод, чтобы получать уведомления при установке точки останова в редакторе.
void _breakpoints_cleared_in_tree() virtual 🔗
Переопределите этот метод, чтобы получать уведомления об очистке всех точек останова в редакторе.
bool _capture(message: String, data: Array, session_id: int) virtual 🔗
Переопределите этот метод для обработки входящих сообщений. session_id — это идентификатор EditorDebuggerSession, который получил message. Используйте get_session() для извлечения сеанса. Этот метод должен возвращать true, если сообщение распознано.
void _goto_script_line(script: Script, line: int) virtual 🔗
Переопределите этот метод, чтобы получать уведомления при щелчке по строке точки останова на панели точек останова отладчика.
bool _has_capture(capture: String) virtual const 🔗
Переопределите этот метод, чтобы включить получение сообщений от отладчика. Если capture — это "my_message", то сообщения, начинающиеся с "my_message:", будут переданы методу _capture().
void _setup_session(session_id: int) virtual 🔗
Переопределите этот метод, чтобы получать уведомления всякий раз, когда создается новый EditorDebuggerSession. Обратите внимание, что сеанс может быть неактивен на этом этапе.
EditorDebuggerSession get_session(id: int) 🔗
Возвращает EditorDebuggerSession с указанным id.
Возвращает массив EditorDebuggerSession, в настоящее время доступный этому плагину отладчика.
Примечание: Сеансы в массиве могут быть неактивны, проверьте их состояние с помощью EditorDebuggerSession.is_active().