(这个方法是@Puzzlem00n 的建议和阅读评论的结合,所以我根本不应该从中获得太多的功劳)
将多个游戏放在一个 lua 程序中!
在 main.lua 中:
require("spaceInvaders") --require all the other Lua files
-- without the ".lua" at the end!
gamestate=spaceInvaders
function love.load()
--all the setup things
end
function love.update()
gamestate.update()
end
function love.draw()
gamestate.draw()
end
function love.keypressed(key)
gamestate.keypressed(key)
end
--and so on for the rest of the love callbacks that you need (such as love.keyreleased())
然后在每个游戏中(这是一个单独的 Lua 文件,例如 spaceInvaders.lua):
spaceInvaders = {}
function spaceInvaders.draw()
--your draw code
end
function spaceInvaders.update()
--your update code
end
--and so on for every other callback you want to use
这段代码所做的是它为每个游戏提供了自己的一组爱情函数。当你想玩那个游戏时,你应该将 gamestate 设置为那个游戏的名字。该spaceInvaders={}
行将 spaceInvaders 定义为一个表,其中存储了每个函数。当您将变量定义为现有变量时,实际上是在创建对它的引用,例如:
t = {}
table.insert(t,1) --place 1 inside t
table.insert(t,3) --also place 3 inside t
s = t
print(s[1]) --will print 1, the first value of t
t[1]=2
print(s[1]) --will print 2, as it refers to t[1], which has just been changed
共享变量!(我解决了这个问题!)
现在,这意味着您可以使用另一个函数在程序周围发送变量。如果您想在游戏之间共享分数,您可以执行以下操作:
在 main.lua 中:
function love.update()
gamestate.update()
score = gamestate.returnScore() --score will always equal to the current score being returned by the game
end
在游戏中,例如 spaceInvaders.lua:
function spaceInvaders.returnScore()
return score --or whatever the score is stored in
end
这将允许您从一个游戏到 main.lua 获得一个变量,例如分数!如果这有点令人困惑,我很抱歉,但希望这就是你要找的!:)