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.

Створення плагінів головного екрана

Що охоплює цей посібник

Плагіни головного екрана дозволяють створювати нові інтерфейси користувача в центральній частині редактора, які відображаються поруч із кнопками «2D», «3D», «Скрипт», «Гра» та «AssetLib». Такі плагіни редактора називаються «плагінами головного екрана».

Цей підручник допоможе вам створити базовий плагін головного екрана. Заради простоти наш плагін головного екрана міститиме одну кнопку, яка друкує текст на консолі.

Ініціалізація плагіна

Спочатку створіть новий плагін у меню «Плагіни». Для цього підручника ми розмістимо його в папці під назвою main_screen, але ви можете використовувати будь-яке ім’я.

The plugin script will come with _enter_tree() and _exit_tree() methods, but for a main screen plugin we need to add a few extra methods. Add four extra methods such that the script looks like this:

@tool
extends EditorPlugin


func _enter_tree():
    pass


func _exit_tree():
    pass


func _has_main_screen():
    return true


func _make_visible(visible):
    pass


func _get_plugin_name():
    return "Main Screen Plugin"


func _get_plugin_icon():
    return EditorInterface.get_editor_theme().get_icon("Node", "EditorIcons")

Важливою частиною цього скрипт є функція _has_main_screen(), яка перевантажена, тому повертає true. Ця функція автоматично викликається редактором після активації плагіна, щоб повідомити, що цей плагін додає до редактора новий центральний вигляд. Наразі ми залишимо цей скрипт як є та повернемося до нього пізніше.

Сцена головного екрана

Створіть нову сцену з кореневим вузлом, отриманим від Control (для цього прикладу плагіна ми зробимо кореневий вузол CenterContainer). Виберіть цей кореневий вузол і у вікні перегляду клацніть меню Макет і виберіть Повний прямокутник. Вам також потрібно ввімкнути прапорець вертикального розміру Розгорнути в інспекторі. Тепер панель використовує весь простір, доступний у головному вікні перегляду.

Далі додамо кнопку до нашого прикладу плагіна головного екрана. Додайте вузол Button та встановіть для тексту значення «Друкувати привіт» або подібне. Додайте такий скрипт до кнопки:

@tool
extends Button


func _on_print_hello_pressed():
    print("Hello from the main screen plugin!")

Потім підключіть «натиснутий» сигнал до себе. Якщо вам потрібна допомога щодо сигналів, перегляньте статтю Використання сигналів.

Ми закінчили з панеллю головного екрана. Збережіть сцену як main_panel.tscn.

Оновіть скрипт плагіна

Нам потрібно оновити скрипт main_screen_plugin.gd, щоб плагін створював екземпляри нашої основної сцени панелі та розміщував її там, де потрібно. Ось повний скрипт плагіна:

@tool
extends EditorPlugin


const MainPanel = preload("res://addons/main_screen/main_panel.tscn")

var main_panel_instance


func _enter_tree():
    main_panel_instance = MainPanel.instantiate()
    # Add the main panel to the editor's main viewport.
    EditorInterface.get_editor_main_screen().add_child(main_panel_instance)
    # Hide the main panel. Very much required.
    _make_visible(false)


func _exit_tree():
    if main_panel_instance:
        main_panel_instance.queue_free()


func _has_main_screen():
    return true


func _make_visible(visible):
    if main_panel_instance:
        main_panel_instance.visible = visible


func _get_plugin_name():
    return "Main Screen Plugin"


func _get_plugin_icon():
    # Must return some kind of Texture for the icon.
    return EditorInterface.get_editor_theme().get_icon("Node", "EditorIcons")

Було додано кілька конкретних рядків. MainPanel — це константа, яка містить посилання на сцену, і ми вставляємо її в main_panel_instance.

Функція _enter_tree() викликається перед _ready(). Тут ми створюємо екземпляр сцени головної панелі та додаємо їх як дочірні елементи певних частин редактора. Ми використовуємо EditorInterface.get_editor_main_screen(), щоб отримати головний екран редактора та додати до нього екземпляр нашої головної панелі як дочірнього. Ми викликаємо функцію _make_visible(false), щоб приховати головну панель, щоб вона не конкурувала за місце під час першої активації плагіна.

Функція _exit_tree() викликається, коли плагін дезактивовано. Якщо головний екран все ще існує, ми викликаємо queue_free(), щоб звільнити примірник і видалити його з пам’яті.

Функцію _make_visible() перевизначено, щоб приховати або показати головну панель за потреби. Ця функція автоматично викликається редактором, коли користувач натискає кнопки головного вікна перегляду у верхній частині редактора.

Функції _get_plugin_name() і _get_plugin_icon() керують відображуваною назвою та піктограмою для кнопки головного вікна перегляду плагіна.

Іншою функцією, яку ви можете додати, є функція handles(), яка дозволяє обробляти тип вузла, автоматично фокусуючи головний екран, коли тип вибрано. Це подібно до того, як клацання 3D-вузла автоматично перемикається на тривимірне вікно перегляду.

Спробуйте плагін

Активуйте плагін у налаштуваннях проекту. Ви побачите нову кнопку поруч із 2D, 3D, Script над головним вікном перегляду. Натиснувши її, ви перейдете до нового плагіна головного екрана, а кнопка посередині надрукує текст.

Якщо ви хочете спробувати готову версію цього плагіна, перегляньте демонстраційні версії плагіна тут: https://github.com/godotengine/godot-demo-projects/tree/master/plugins

Якщо ви хочете побачити повніший приклад того, на що здатні плагіни головного екрана, перегляньте демонстраційні проекти 2.5D тут: https://github.com/godotengine/godot-demo-projects/tree/master/misc/ 2.5d