gpt4 book ai didi

menu - 更改 love.load 函数中的内容

转载 作者:行者123 更新时间:2023-12-04 19:36:10 30 4
gpt4 key购买 nike

我和我的 friend 最近一直在用 love2d 开发一款游戏,但在开发的早期阶段,我的电脑硬盘停止工作,这意味着只有我的 friend 可以在上面工作。现在我有一台电脑,我想在 Love2d 中制作一个主菜单,但是 love.load 函数(生成世界等)中有很多代码。我的问题是我可以在游戏运行时更改 love.load 中的内容吗?例如,主菜单加载,然后在按下开始按钮时加载世界的生成。

最佳答案

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

从长远来看,第二种选择更加灵活。它可以处理任何数量和类型的场景,每个场景都没有条件逻辑。这将需要一点“对象”思维。所有的场景都需要一种一致的方式来更新和绘制。

如果您的世界需要一段时间才能加载,您可能希望显示一个临时的“世界正在加载”场景,这样您的用户就不会不耐烦了。

关于menu - 更改 love.load 函数中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15229622/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com