假设我想创建一个模块来说明一组GUI控件,我将如何创建一个可以加载所有GUI脚本的模块,我应该将这些脚本作为模块本身?我想有一个这样的系统:
module("bgui", package.seeall)
dofile("modules/bgui/control.lua")
dofile("modules/bgui/container.lua")
dofile("modules/bgui/screenmanager.lua")
dofile("modules/bgui/form.lua")
dofile("modules/bgui/button.lua")
dofile("modules/bgui/textbox.lua")
dofile("modules/bgui/label.lua")
Run Code Online (Sandbox Code Playgroud)
那么所有运行的文件都会将它们设置的变量作为bgui模块的一部分吗?Aka如果在control.lua中,我control = {...}会将它定义为bgui.control,还是应该将control.lua作为一个模块本身,就像module("bgui.control")我想要的那样?
对不起,如果不是很清楚,不得不急着写,谢谢:)
你实际上在这里问了两个问题.
第一个是"这是在模块上加载大量文件的方法吗?"
答案是 - 是的.调用该文件是一种不言而喻的标准mymodule/init.lua.大多数人的路径都包含?/init.lua,所以你可以写require('modules/bgui'),init.lua会自动加载.
这就是说,您可能希望通过使用临时表和循环来删除一些代码重复:
# modules/bgui/init.lua
local files = {
'control', 'container', 'screenmanager', 'form', 'button', 'textbox', 'label'
}
for _,file in ipairs(files) do dofile("modules/bgui/" .. file .. ".lua") end
Run Code Online (Sandbox Code Playgroud)
第二个问题是"在bgui上可用的一个文件上定义的对象吗?".答案也是肯定的,只要定义变量的文件在使用变量的文件之前"完成"(带dofile或require).