Godot编辑器中如何通过工具创建的子节点选中父场景?
Godot @Tool脚本动态添加子节点无法选中父节点的修复方案
我有一个带有@tool注解、继承自Node3D的空场景,用于标记NPC生成位置。在编辑器模式下的_ready函数中,我添加了一个MeshInstance3D网格实例使其在编辑器中可见。该网格显示正常,但点击这个工具脚本动态创建的子节点时,无法选中其父场景;而静态添加相同网格时则可以正常选中父场景。尝试过重新父化或修改owner但无效,且子节点的AABB是正确的。
原脚本代码:
func _ready() -> void: if Engine.is_editor_hint(): var mesh_instance = MeshInstance3D.new() mesh_instance.position.y += 0.03 mesh_instance.cast_shadow = false var qmesh: QuadMesh = QuadMesh.new() qmesh.size = Vector2(0.4, 0.4) mesh_instance.mesh = qmesh add_child(mesh_instance)
解决方案
通过设置动态添加的子节点owner为父节点自身即可解决问题,注意必须先添加子节点再设置owner,先设置owner再添加子节点的方式无效。
修正后的完整脚本:
func _ready() -> void: if Engine.is_editor_hint(): var mesh_instance = MeshInstance3D.new() mesh_instance.position.y += 0.03 mesh_instance.cast_shadow = false var qmesh: QuadMesh = QuadMesh.new() qmesh.size = Vector2(0.4, 0.4) mesh_instance.mesh = qmesh add_child(mesh_instance) mesh_instance.owner = self
内容的提问来源于stack exchange,提问作者Jan Seda
相关产品推荐
相关产品推荐

