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
Базовий клас для реалізації плагінів debugger.
Опис
EditorDebuggerPlugin надає функції, пов’язані з редактором налагоджувача.
Щоб взаємодіяти з налагоджувачем, екземпляр цього класу потрібно додати до редактора за допомогою EditorPlugin.add_debugger_plugin().
Після додавання зворотний виклик _setup_session() буде викликатися для кожного EditorDebuggerSession, доступного для плагіна, а також під час створення нових (сеанси можуть бути неактивними на цьому етапі).
Ви можете отримати доступні EditorDebuggerSession за допомогою get_session() або отримати певний за допомогою get_session().
@інструмент
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" # Буде використано як заголовок вкладки.
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("Ехо отримано:", дані)
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 тепер доступний для цього плагіна.
Note: Сесія в масиві може бути неактивним, перевірити стан через EditorDebuggerSession.is_active().