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

标签 menu lua love2d

我和我的 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/

相关文章:

love2d - 执行 Love2D 脚本

lua - Love2D 背景图像从其他对象中获取颜色

css - 将菜单与响应式缩略图网格的第一个缩略图对齐

variables - 如何将空变量传递给Lua中的函数

lua - redis lua - eval 在处理 Long.MAX_VALUE 时返回错误值

compiler-construction - 是否可以用高级语言实现编译器?

c++ - 编译 Love 2D Xcode : Undefined Symbols for Architecture

javascript - 根据 attr 按类选择元素,然后添加或删除类

android - 在 Android XML 中重用 TextView 代码

wordpress - 如何使用 wp_nav_menu 在 ul 之前添加标题?