あなた:
GDScript2で、インスタンス化して子ノードに追加しているノードがあるとき、スクリプトでそのノードの子ノードを取得する方法は
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
を使って追加直後に何か処理を待ちたい場合は注意が必要です。
必要であれば、動的に取得したノードの種類や状態もチェックできます:
gdscriptif my_node.has_node("ChildNodeName"): var child = my_node.get_node("ChildNodeName") if child is Label: child.text = "こんにちは"
もっと具体的な構成があるなら、ノードツリーや名前を教えてくれれば、それに合わせてコード書けるよ!