Up to date
This page is up to date for Godot 4.3.
If you still find outdated information, please open an issue.
グループ
Godotのグループは他のソフトウェアのタグと同じような機能です。ノードは複数のグループへ追加できます。次にコードではSceneTreeを使用して以下のことを行うことができます。
グループ内のノードのリストを取得。
グループ内のすべてのノードのメソッドを呼び出し。
グループ内のすべてのノードへ通知を送信。
これは大規模なシーンを整理し、コードを分離するのに便利な機能です。
グループの管理
グループは新しいグループ名へノードを追加することによって作成され、同様に特定のグループからすべてのノードを削除することによって削除されます。
グループにノードを追加/削除するには2つの方法があります。
設計中にエディターのノードドック、またはプロジェクト設定のグローバルグループから追加します。
実行中に Node.add_to_group() または Node.remove_from_group() を呼び出します。
ノードドックの使用
ノードドックの"グループ"タブを使用して、新しいグループを作成できます。
シーンドックで1つまたは複数のノードを選択し、"+"記号の付いた追加ボタンをクリックします。
"新規グループの作成" というモーダルダイアログが表示されるはずです。フィールドにグループ名を打ち込みます。
オプションで"グローバル"オプションをマークすると、グループがプロジェクト全体で表示され、任意のプロジェクトシーンで再利用できるようになります。グローバルグループは説明を付けることもできます。
入力が完了したら、"OK"を押すとグループが作成されます。
"グローバル"オプションがオフの場合は"シーングループ"の下の"グループ"タブに、そのオプションがオンになっている場合は"グローバルグループ"の下に新しいグループが表示されます。
シーンドックで選択したノードをグループに追加するには、グループドックでグループの左側にあるチェックボックスをオンにします。新しいグループの作成時には選択したノードが自動的にチェックされます。
プロジェクト内に存在する、グローバルとしてマークされ、任意のシーンから作成されたすべてのグループは、グローバルグループの下に表示されます。
現在のシーンのノードから派生した他のグループは、シーングループ の下に表示されます。
警告
同じベースとなるロジックがグローバルグループとシーングループの両方に使用されます。同じ名前のグループは同一とみなされます。この機能は純粋に組織的なものです。
グローバルグループは、プロジェクト設定内のグローバルグループドックで管理できます。そこで新しいグローバルグループを追加したり、既存のグループの名前や説明を変更したりできます。
コードの使用
スクリプトからグループを管理することもできます。次のコードはスクリプトをアタッチするノードがシーンツリーに入ったときに 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");
}
上記のコードは、グループ guards のすべてのメンバーに対して関数 enter_alert_mode を呼び出します。
guards グループ内のノードの完全なリストを配列として取得するには、 SceneTree.get_nodes_in_group() を呼び出すことができます。
var guards = get_tree().get_nodes_in_group("guards")
var guards = GetTree().GetNodesInGroup("guards");
SceneTreeクラスは、シーン、ノードの階層、ノードのグループとの対話など、多くの便利なメソッドを提供します。シーンを簡単に切り替えたり、リロード、ゲーム終了、一時停止、一時停止の解除もできます。そのうえ、興味深いシグナルもあります。時間があればチェックしてみてください。