Godot 4.0 beta3
Godot 4.0 中添加了 lambda 表达式,匿名方法等很多方便的特性,这里我写个用于扫描目录下所有文件的功能
可以看到代码非常简洁
func test():
# Callable 方法,扫描目录下所有的文件
# [code]path[/code] 要扫描的路径
# [code]callback[/code] 回调方法,这里用来再次调用自己
# [code]list[/code] 存入路径到这个数组里
var scan_dir = func(path:String, callback:Callable, list: Array):
var dir = DirAccess.open(path)
if dir:
# 添加文件
list.append_array(Array(dir.get_files()).map( func(file):
# 给文件名加上路径
return path.path_join(file)
) )
# 继续递归扫描
for d in dir.get_directories():
callback.call(path.path_join(d), callback, list)
# 执行方法
var file_list = []
scan_dir.call("res://", scan_dir, file_list)
# 输出目录及子目录下所有文件
print(file_list)