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.

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

bool

_capture(message: String, data: Array, session_id: int) virtual

void

_goto_script_line(script: Script, line: int) virtual

bool

_has_capture(capture: String) virtual const

void

_setup_session(session_id: int) virtual

EditorDebuggerSession

get_session(id: int)

Array

get_sessions()


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

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.


Array get_sessions() 🔗

Повертає масив EditorDebuggerSession тепер доступний для цього плагіна.

Note: Сесія в масиві може бути неактивним, перевірити стан через EditorDebuggerSession.is_active().