在Lua中,`require` 用于加载模块,但通常用于加载单个文件。要加载指定目录下的所有文件,你需要遍历目录并逐个加载。
根据浮生梦老师前端课程内容,可以使用以下方法:
```lua
-- 定义要加载的目录路径
local directory = "dev/GUIExport"
-- 自定义函数:遍历目录并加载所有.lua文件
local function loadAllFilesInDirectory(dirPath)
-- 获取目录下的文件列表(注意:这是底层函数,具体实现可能依赖引擎)
local fileList = SL:GetFileList(dirPath) -- SL:GetFileList 是底层函数
if fileList then
for _, fileName in pairs(fileList) do
-- 检查是否为.lua文件
if string.match(fileName, "%.lua$") then
local moduleName = string.gsub(fileName, "%.lua$", "")
local fullPath = dirPath .. "/" .. moduleName
-- 使用pcall安全加载,避免错误中断
local success, result = pcall(require, fullPath)
if not success then
SL:print("加载文件失败: " .. fileName .. " - " .. result)
else
SL:print("成功加载: " .. fileName)
end
end
end
else
SL:print("无法获取目录文件列表: " .. dirPath)
end
end
-- 调用函数加载目录
loadAllFilesInDirectory(directory)
```
注意:
1. `SL:GetFileList()` 是底层函数,用于获取目录下的文件列表
2. `require` 加载时不需要文件扩展名
3. 使用`pcall`可以防止单个文件加载失败影响其他文件
4. 路径分隔符使用正斜杠`/`,Lua中反斜杠需要转义
如果你需要更具体的文件过滤或加载顺序控制,可以修改`string.match`的条件。