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...
Групи
Групи в Godot працюють як теги в іншому програмному забезпеченні. Ви можете додати вузол до будь-якої кількості груп. Потім у коді ви можете використовувати SceneTree для:
Отримайте список вузлів у групі.
Викликати метод на всіх вузлах у групі.
Надіслати сповіщення всім вузлам у групі.
Це корисна функція для організації великих сцен і відокремлення коду.
Керування групами
Групи створюються шляхом додавання вузла до імені нової групи, і так само вони видаляються шляхом видалення всіх вузлів із даної групи.
Існує два способи додавати/видаляти вузли до груп:
Під час проектування за допомогою док-станції Node у редакторі або глобальних груп у налаштуваннях проекту.
Під час виконання викликом Node.add_to_group() або Node.remove_from_group().
Використання док-станції Node
Ви можете створювати нові групи за допомогою вкладки «Групи» в док-станції Node.

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

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

Ви повинні побачити нові групи на вкладці «Групи» у розділі «Групи сцен», якщо параметр «Глобальні» не було позначено, або в розділі «Глобальні групи», якщо цей параметр було позначено.
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.

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

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

Використання коду
Ви також можете керувати групами за допомогою сценаріїв. Наступний код додає вузол, до якого ви приєднуєте сценарій, до групи guards
, щойно він потрапляє в дерево сцени.
func _ready():
add_to_group("guards")
public override void _Ready()
{
base._Ready();
AddToGroup("guards");
}
Уявіть, що ви створюєте гру проникнення. Коли ворог помічає гравця, ви хочете, щоб усі охоронці та роботи були напоготові.
У вигаданому прикладі нижче ми використовуємо SceneTree.call_group()
, щоб сповістити всіх ворогів про те, що гравця помітили.
func _on_player_spotted():
get_tree().call_group("guards", "enter_alert_mode")
public void _OnPlayerDiscovered()
{
GetTree().CallGroup("guards", "enter_alert_mode");
}
Наведений вище код викликає функцію enter_alert_mode
для кожного члена групи guards
.
Щоб отримати повний список вузлів у групі guards
у вигляді масиву, ви можете викликати SceneTree.get_nodes_in_group():
var guards = get_tree().get_nodes_in_group("guards")
var guards = GetTree().GetNodesInGroup("guards");
Клас SceneTree надає безліч корисних функцій, таких як взаємодія зі сценами, ієрархією їх вузлів та групами вузлів. Він дозволяє вам легко перемикати сцени, або перезавантажувати їх, виходити з гри, або призупиняти та відновлювати її. Він також надає корисні сигнали.