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를 사용하여 다음을 수행할 수 있습니다.

  • 그룹의 노드 목록을 가져옵니다.

  • 그룹의 모든 노드에 대해 메서드를 호출합니다.

  • 그룹의 모든 노드에게 알림을 보냅니다.

이는 대규모 장면을 구성하고 코드를 분리하는 데 유용한 기능입니다.

그룹 관리

그룹은 새 그룹 이름에 노드를 추가하여 생성되며 마찬가지로 지정된 그룹에서 모든 노드를 제거하여 제거됩니다.

이렇게 하고 싶어하는 몇 가지 이유가 있습니다:

  • During design, by using the Groups dock in the editor, or the Groups tab in the Globals dock in project settings.

  • 실행 중에 노드.add_to_group() 또는 :ref:`노드.remove_from_group() <class_Node_method_remove_from_group>`을 호출하여 수행됩니다.

While not strictly required, it's recommended to use the snake_case naming convention for group names.

Using the Groups dock

You can create new groups using the Groups dock.

../../_images/groups_dock.webp

씬 독에서 노드를 선택한 후 + 기호가 있는 추가 버튼을 클릭합니다.

../../_images/groups_add_new_group_button.webp

이제 만들기 New 그룹 모달이 나타나는 것을 볼 수 있습니다. 해당 필드에 그룹 이름을 입력하세요.

선택적으로 "글로벌" 옵션을 표시하면 그룹이 프로젝트 전체에 표시되고 모든 프로젝트 씬에서 재사용될 수 있습니다. 이를 통해 설명을 제공할 수도 있습니다.

완료되면 확인을 눌러 생성하세요.

../../_images/groups_add_new_group_modal.webp

You should see the new groups appear in the Groups dock under Scene Groups if the Global option was unmarked, or under Global Groups if that option was marked.

씬 독에서 선택한 노드는 그룹 도크의 그룹 왼쪽에 있는 확인란을 선택하여 그룹에 추가할 수 있습니다. 새 그룹을 생성할 때 선택한 노드가 자동으로 확인됩니다.

../../_images/groups_dock_with_created_groups.webp

씬에서 생성되어 글로벌로 표시된 프로젝트에 있는 모든 그룹은 글로벌 그룹 아래에 표시됩니다.

현재 씬의 노드에서 파생된 다른 모든 그룹은 씬 그룹 아래에 표시됩니다.

경고

Global 및 씬 그룹 모두에 동일한 기본 논리가 사용됩니다. 동일한 이름을 가진 그룹은 하나의 동일한 그룹으로 간주됩니다. 이 기능은 순전히 조직적입니다.

../../_images/groups_node_tab_with_multiple_types_of_groups.webp

You can manage Global Groups in the Groups tab of the Globals dock, inside Project Settings. There, you will be able to add new global groups, or change existing groups' names and descriptions.

../../_images/groups_global_groups_settings.webp

RigidBody2D 사용하기

두 번째는 코드에서 하는 방법입니다. 다음 스크립트는 현재 노드가 씬 트리에 나타나면 enemies라는 그룹에 추가되는 스크립트입니다.

func _ready():
    add_to_group("guards")

침투 게임을 만들고 있다고 상상해 보세요. 적이 플레이어를 발견하면 모든 경비원과 로봇이 경계하도록 해야 합니다.

아래 가상의 예에서는 ``SceneTree.call_group()``를 사용하여 모든 적에게 플레이어가 발견되었음을 알립니다.

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

위의 코드는 그룹 enemies의 모든 구성원이 player_was_discovered 함수를 호출합니다.

또한 SceneTree.get_nodes_in_group()을 호출해 enemies 노드의 전체 목록을 가져올 수도 있습니다:

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

SceneTree 클래스는 씬, 씬의 노드 계층, 그리고 그룹과 상호작용하는 데 더 유용한 여러 메서드를 제공합니다. 이는 씬을 쉽게 전환하거나 다시 불러오고, 게임을 종료하거나 일시 정지 및 일시 정지를 해제할 수 있도록 합니다. 또한 유용한 시그널도 제공합니다.