Love2D:在love.load中创建变量而不是在main.lua文件的顶部之间有什么区别?

时间:2016-10-17 18:02:25

标签: lua love2d

如果您查看love.load的文档,则说明

  

此功能在游戏开始时只调用一次。

并没有别的。它还有一个参数,即命令行参数。

因此,如果您不使用args,那么有什么区别:

x = 5

-- rest of code

function love.load()
  x = 5
end

-- rest of code

避免love.load的最大好处是,您可以将x设为本地而非全局。使用love.load是否有任何好处?

3 个答案:

答案 0 :(得分:2)

我认为简单值(例如您在示例中显示的内容)没有任何区别,但是使用love.graphics或其他组件的更复杂的代码需要从love.load执行因为它可以保证发动机在那时正确设置和初始化。

答案 1 :(得分:2)

main.lua运行之后,Love调用love.run,它持有主游戏循环。 love.run所做的第一件事就是调用love.load(...),其中...包含游戏的命令行参数,您可能会觉得这些参数很有用。

这意味着,love.load在所有main.lua代码后运行,但在love.draw之前,love.update和类似代码开始被调用

这有什么价值,主要取决于你自己。

答案 2 :(得分:1)

就像你说的那样,love.load()只在开头运行一次,因此非常适合初始化变量。可以更频繁地加载在该函数之外设置的所有内容。

尝试创建conf.lua文件并激活控制台。然后在love.load()之外打印()一些东西,你就会看到。

-- conf.lua
function love.conf(t)
  t.console = true
end

-- main.lua
print("Hello World!")
function love.load()
end

对我而言,它始终打印着#Hello; Hello World!"开始游戏时两次。

就像Paul Kulchenko所说,它可能与简单的价值观没有任何区别,但你永远不会知道...;)