My friend and I have been working on a game in love2d recently, but in the early stages of developing my computer hard drive stopped working meaning only my friend could work on it. Now I have a computer and I want to make a main menu in Love2d but There is alot of code in the love.load function (generation of the world and such). My question is can I change what is in love.load when the game is running? e.g The main menu loads up, then the generation of the world loads up when the start button is pressed.
问问题
430 次
1 回答
3
该love.load
函数只运行一次。正如您所提到的,它通常用于设置数据结构和预加载其他资源。您可以使用它来处理世界预加载和菜单预加载。然后,通过某种状态控制什么是活动的。一个简化的例子:
local state = "menu"
function love.load()
preLoadMenu()
preLoadWorld()
end
function love.update(dt)
if state == "menu" then
updateMenu()
else
updateWorld()
end
end
function love.draw()
if state == "menu" then
drawMenu()
else
drawWorld()
end
end
function love.mousepressed(x, y, button)
if startClicked(x,y,button) then
state = "world"
end
end
可以想象,您绝对不想在加载时为您的游戏预加载所有内容。也许你的游戏太大了。如果是这种情况,请考虑使用活动场景。场景可能是菜单,也可能是游戏关卡。同样,一个简化的例子:
local currentScene
function love.load()
currentScene = loadMenu()
end
function love.update(dt)
currentScene.update(dt)
end
function love.draw()
currentScene.draw()
end
function love.mousepressed(x, y, button)
if startClicked(x,y,button) then
currentScene = loadWorld()
end
end
从长远来看,第二种选择更加灵活。它可以处理任意数量和类型的场景,而无需为每个场景提供条件逻辑。这需要一点“对象”的思考。所有场景都需要一致的方式来更新和绘制。
如果您的世界需要一段时间来加载,您可能希望显示一个临时的“世界正在加载”场景,这样您的用户就不会感到不耐烦。
于 2013-03-05T17:50:02.660 回答