Godot 4.1.1中如何检查场景是否存在?加载报错求助
Godot 4.1.1 批量加载场景问题解决
你的写法之所以报错,是因为Godot的load()函数找不到资源时,不会返回null,而是直接抛出加载失败的错误,导致你的else分支根本没机会执行。
正确的资源存在性检查方式
用ResourceLoader.exists()来判断场景是否存在,这个函数只会返回true/false,不会触发报错。
优化后的代码
func get_room_array(): var i = 1 while true: var room_path = get_room_path(i) # 先检查路径对应的场景是否存在 if ResourceLoader.exists(room_path): # 确认存在后再加载,避免报错 var room_scene = load(room_path) room_array.append(room_scene) else: break i += 1
额外提醒
- 别重复调用
get_room_path(i)和load(),把结果存进变量里,能减少不必要的性能消耗。 - 要保证
get_room_path(i)返回的是完整正确的资源路径,比如res://scenes/rooms/room_1.tscn,路径写错再怎么检查也找不到资源。 - 如果要加载的场景数量很多,也可以试试异步加载的
ResourceLoader.load_threaded_request(),避免卡住游戏主线程,但新手先把同步加载的逻辑搞清楚更合适。
内容的提问来源于stack exchange,提问作者Azashiro Merume
相关产品推荐
相关产品推荐

