1

是否可以动态加载lua文件?例如加载下一个级别?

背景: * 有一个基于故事板的小游戏 * 每个关卡都有不同的故事板文件,但动态/代码完全相同,所以我想我会从一个单独的文件动态加载关卡背景/对象。例如,我可以有 level_1.lua、level_2.lua 等。在这些文件中,他们可以创建(在 lua 中)他们的整套背景/交互对象等,并作为一个显示对象传递回主游戏情节提要文件 * 有效可以使用“需要 level_1”,但是现在尝试使这种动态化我可能会遇到问题

如果不可能有什么建议吗?

4

3 回答 3

5

require是一个接受字符串的函数,仅此而已。您不使用括号的事实只是语法糖,仅在字符串为常量时才适用。如果将其作为普通函数运行,则可以对字符串执行任何操作:

module = require( "level_"..level_number )

...或者...

levels = { "castle", "castle2", "boss" }
module = require( levels[level_number] )

等等等等……

于 2013-01-03T05:40:16.053 回答
2

如果 loadfile() 在电晕中不起作用,您也许可以使用 require 因为它起作用

例如

if level == 1 then
  game = require "level1"
else
  game = require "level2"
end

我相信你可以在任何地方使用 require,从http://www.lua.org/pil/8.1.html

Lua 提供了一个更高级别的函数来加载和运行库,称为 require。粗略地说,require 和 dofile 做同样的工作,但有两个重要的区别。首先, require 在路径中搜索文件;其次,require 控制文件是否已经运行以避免重复工作。由于这些特性,require 是 Lua 中加载库的首选函数。

于 2013-01-03T04:52:34.550 回答
2

Corona SDK 确实允许您在需要时需要模块,但这与在运行时动态加载模块不同。用 require 语句加载的东西是在构建时编译的。您以后不能下载 .lua 文件并将其包含在内。Apple 明确禁止这种行为。

但是,如果您的最终目标是遵循 DRY 原则(不要重复自己),并且拥有一组代码而不是多次重复它,如果您可以在一个非常大的表中包含所有关卡数据,或者您可以将每个人的数据保存到 JSON 格式的文本文件中,然后逐级读取它们。你不能在其中有可执行代码或公式,但你可以有图像名称、x、Y 坐标、物理属性等。

于 2013-01-06T02:49:41.980 回答