GDScriptの使い方をChatGPTに聞く

子ノードを取得

<< 戻る

あなた:
GDScript2で、インスタンス化して子ノードに追加しているノードがあるとき、スクリプトでそのノードの子ノードを取得する方法は
ChatGPT:

GDScript 2.0(Godot 4.x)で、インスタンス化して子ノードに追加したノードの子ノードを取得する方法は、通常の get_node()get_child() を使って可能です。以下に具体的な例を示します。


例:インスタンス化したノードの子ノードを取得

gdscript
# 例: プレハブ(PackedScene)をインスタンス化して追加 var my_scene = preload("res://MyScene.tscn") var my_node = my_scene.instantiate() add_child(my_node) # 子ノード取得(名前で取得する場合) var child = my_node.get_node("ChildNodeName") # 子ノード取得(インデックスで取得する場合) var first_child = my_node.get_child(0) # 子ノード一覧を取得する場合 for c in my_node.get_children(): print(c.name)

解説

  • get_node("ノード名"):名前で特定の子ノードを取得できます。

  • get_child(index):インデックス番号で子ノードを取得。

  • get_children():すべての子ノードの配列を取得します。


注意点

  • インスタンス化後すぐに取得しようとするときは、そのノードがすでに構築済みであることを確認してください。Godot 4.x ではインスタンス化された時点でノード構造は完成しているので基本的には問題ありませんが、await を使って追加直後に何か処理を待ちたい場合は注意が必要です。


必要であれば、動的に取得したノードの種類や状態もチェックできます:

gdscript
if my_node.has_node("ChildNodeName"): var child = my_node.get_node("ChildNodeName") if child is Label: child.text = "こんにちは"

もっと具体的な構成があるなら、ノードツリーや名前を教えてくれれば、それに合わせてコード書けるよ!