Godot中如何获取实例化场景自身的存储目录路径
问题原因
get_tree().edited_scene_root的作用是获取编辑器当前打开的正在编辑的根场景节点,运行游戏时这个值等于你启动运行时选中的入口场景。你从Level1场景启动游戏时,这个节点就是Level1的场景根,自然会返回Level1所在的res://Scenes/Levels路径,和Character1自身的存储位置没有关联。
正确实现方法
你需要获取Character1场景自身的存储路径,不需要访问场景树的编辑根属性,直接读取当前场景实例节点自带的源文件路径属性即可,不管场景被实例化到任何其他场景中,这个值都指向场景自身的存储位置:
- Godot 3.x 版本,直接在Character1挂载的脚本中写:
print(self.filename.get_base_dir())
- Godot 4.x 版本,对应属性名做了调整,写法为:
print(self.scene_file_path.get_base_dir())
如果你的脚本是挂载在Character1场景的子节点而非根节点上,需要先获取所属场景的根节点再读取路径,Godot 4示例:
var char_scene_root = get_owner() print(char_scene_root.scene_file_path.get_base_dir())
以上代码运行后会正确输出你预期的res://Scenes/Characters结果。
内容的提问来源于stack exchange,提问作者cak3_lover
相关产品推荐
相关产品推荐

