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 у редакторі або глобальних груп у налаштуваннях проекту.

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

Використання док-станції Node

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

../../_images/groups_node_tab.webp

Select a node in the Scene dock then click the add button with the + symbol.

../../_images/groups_add_new_group_button.webp

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

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

Після завершення натисніть OK, щоб створити його.

../../_images/groups_add_new_group_modal.webp

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

A selected Node from the Scene dock can be added into groups by marking the checkbox on the left side of the groups in the Groups dock. The node you had selected when creating a new group will be automatically checked.

../../_images/groups_node_tab_with_created_groups.webp

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

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

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

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

../../_images/groups_node_tab_with_multiple_types_of_groups.webp

Ви можете керувати глобальними групами в док-станції Global Groups у налаштуваннях проекту. Там ви зможете додавати нові глобальні групи або змінювати назви та описи існуючих груп.

../../_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 надає безліч корисних функцій, таких як взаємодія зі сценами, ієрархією їх вузлів та групами вузлів. Він дозволяє вам легко перемикати сцени, або перезавантажувати їх, виходити з гри, або призупиняти та відновлювати її. Він також надає корисні сигнали.