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.

Групи

Групи в Godot працюють як теги в іншому програмному забезпеченні. Ви можете додати вузол до будь-якої кількості груп. Потім у коді ви можете використовувати SceneTree для:

  • Отримайте список вузлів у групі.

  • Викликати метод на всіх вузлах у групі.

  • Надіслати сповіщення всім вузлам у групі.

Це корисна функція для організації великих сцен і відокремлення коду.

Керування групами

Групи створюються шляхом додавання вузла до імені нової групи, і так само вони видаляються шляхом видалення всіх вузлів із даної групи.

Існує два способи додавати/видаляти вузли до груп:

  • Під час проектування за допомогою панелі «Групи» в редакторі або вкладки «Групи» на панелі «Глобальні параметри» в налаштуваннях проєкту.

  • Під час виконання викликом Node.add_to_group() або Node.remove_from_group().

Порада

Хоча це не є обов'язковим, рекомендується використовувати конвенцію іменування snake_case для назв груп.

Використання панелі «Групи»

Ви можете створювати нові групи за допомогою панелі «Групи».

../../_images/groups_dock.webp

Виберіть вузол у панелі «Сцена», а потім натисніть кнопку «Додати» із символом «+».

../../_images/groups_add_new_group_button.webp

Тепер ви повинні побачити модаль «Створити нову групу». Напишіть назву групи в полі.

За бажанням можна позначити опцію «Глобальна», що зробить групу видимою для всього проекту та її можна буде повторно використовувати в будь-якій сцені проекту. Це також дозволить вам дати йому опис.

Коли закінчите, натисніть кнопку «Ok», щоб створити його.

../../_images/groups_add_new_group_modal.webp

Нові групи мають з’явитися в панелі «Групи» у розділі «Групи сцен», якщо опція «Глобальні» не була позначена, або у розділі «Глобальні групи», якщо ця опція була позначена.

Вибраний вузол із панелі «Сцена» можна додати до груп, установивши прапорець ліворуч від груп у панелі «Групи». Вузол, який ви вибрали під час створення нової групи, буде автоматично перевірений.

../../_images/groups_dock_with_created_groups.webp

Усі групи, присутні в проекті, які були позначені як Глобальні, створені з будь-якої сцени, будуть видимі в Глобальних групах.

Будь-яка інша група, отримана з вузлів у поточній сцені, з’явиться в розділі «Групи сцен».

Попередження

Та сама основна логіка використовується як для глобальних, так і для груп сцен. Групи з однаковою назвою вважаються однією. Ця особливість суто організаційна.

../../_images/groups_node_tab_with_multiple_types_of_groups.webp

Управління глобальними групами здійснюється на вкладці «Групи» в панелі «Глобальні параметри» в розділі «Налаштування проєкту». Там ви зможете додавати нові глобальні групи або змінювати назви та описи існуючих груп.

../../_images/groups_global_groups_settings.webp

Використання коду

Ви також можете керувати групами за допомогою скрипта. Наступний код додає вузол, до якого ви приєднуєте скрипт, до групи guards, щойно він потрапляє в дерево сцени.

func _ready():
    add_to_group("guards")

Уявіть, що ви створюєте гру проникнення. Коли ворог помічає гравця, ви хочете, щоб усі охоронці та роботи були напоготові.

У вигаданому прикладі нижче ми використовуємо SceneTree.call_group(), щоб сповістити всіх ворогів про те, що гравця помітили.

func _on_player_spotted():
    get_tree().call_group("guards", "enter_alert_mode")

Наведений вище код викликає функцію enter_alert_mode для кожного члена групи guards.

Щоб отримати повний список вузлів у групі guards у вигляді масиву, ви можете викликати SceneTree.get_nodes_in_group():

var guards = get_tree().get_nodes_in_group("guards")

Клас SceneTree надає безліч корисних функцій, таких як взаємодія зі сценами, ієрархією їх вузлів та групами вузлів. Він дозволяє вам легко перемикати сцени, або перезавантажувати їх, виходити з гри, або призупиняти та відновлювати її. Він також надає корисні сигнали.