是否可以动态加载lua文件?例如加载下一个级别?
背景: *有一个基于故事板的小游戏 *每个级别都会有不同的故事板文件,但动态/代码完全相同,所以我想我会动态地从单独的文件加载级别背景/对象。例如。我可以有level_1.lua,level_2.lua等。在这些文件中,他们可以创建(在lua中)他们的整套背景/交互对象等,并作为一个显示对象传回主游戏故事板文件 *使用“require level_1”工作正常,但现在试图让这种动态我可能遇到问题
如果不可能有任何建议吗?
答案 0 :(得分:5)
require
是一个带字符串的函数,仅此而已。不使用括号的事实只是语法糖,只有当字符串是常量时才适用。如果您将其作为普通函数运行,您可以使用字符串执行任何操作:
module = require( "level_"..level_number )
...或...
levels = { "castle", "castle2", "boss" }
module = require( levels[level_number] )
Etc等......
答案 1 :(得分:2)
如果loadfile()在电晕中不起作用,你可以使用require,因为它可以工作
e.g。
if level == 1 then
game = require "level1"
else
game = require "level2"
end
我相信您可以在任何地方使用,http://www.lua.org/pil/8.1.html
Lua提供了一个更高级的函数来加载和运行库,称为 要求。粗略地说,要求与dofile完成相同的工作,但有两个 重要的区别。首先,要求在路径中搜索文件; 第二,要求控制文件是否已经运行以避免 重复工作。由于这些功能,需要的是 Lua中用于加载库的首选函数。
答案 2 :(得分:2)
Corona SDK确实允许您在需要时需要模块,但这与在运行时动态加载模块不同。在构建时编译加载了require语句的东西。您以后不能下载.lua文件并将其包含在内。 Apple特别禁止这种行为。
但如果你的最终目标是遵循DRY原则(不要重复自己),并且拥有一组代码而不是重复一遍,如果你可以在一个真正的大桌子上它中的数据级别,或者您可以将每个人的数据保存到JSON格式的文本文件中,然后逐级读取它们。你不能拥有可执行代码或公式,但你可以拥有图像名称,x,Y坐标,物理属性等。