0

我有一个带有选项按钮的菜单屏幕。当我单击此按钮时,它会很好地加载 options.lua 文件。

love.filesystem.load( "options.lua" )( ) love.load( )

在选项屏幕上,我想添加一个返回按钮以返回主菜单。在我的脑海中,我需要卸载 options.lua 文件。

function love.mousepressed( x, y)
    if x > 275 and x < 320 and y > 305 and y < 325 then 

    end
end
4

2 回答 2

1

尽管 Paul 的回答是一种选择,但您可以采用不同的方法来解决这个问题:您正在以一种会让您非常痛苦的方式思考这个问题,因为在 Lua 和许多其他语言中,加载文件并不是一种在以下位置运行代码的方式可变时间。尽管这可能会使您更改比您想要的更多的代码,但请考虑为 GUI 状态创建一个变量,并且仅在该变量具有特定值时才绘制您想要的内容。例如:

添加到你的 love.load 函数:

    function love.load()
      -- Set the gui state to the defualt ( the main menu )
      guistate = "menu" -- You probably should use an integer, am using a string for the purpose of clarity.
    end

这在同一个地方:

function love.mousepressed( x, y)
    if x > 275 and x < 320 and y > 305 and y < 325 then 
      -- The back button is pressed, change the state to the menu.
      guistate = "menu"
    end
end

添加到你的 love.draw 函数:

function love.draw()
  if guistate = "menu" then
    -- Draw the stuff for your main menu
  elseif guistate = "options" then
    -- Draw the stuff for your options menu.
  end
end

附加功能

如果您有兴趣,还可以看看这些 GUI 库: Love FramesQuickie

于 2015-08-14T06:30:11.867 回答
0

无法“卸载”该文件;你只能否定它的加载效果。您执行该options.lua片段中的内容,如果它有类似的内容a = 5,要撤消此更改,您需要a在执行代码之前保存的值,options.lua然后稍后恢复该值。

这样的事情可能适用于a

local default = {}
default.a = a -- save the current value of a (if any)
love.filesystem.load( "options.lua" )( ) love.load( )
function love.mousepressed( x, y)
    if x > 275 and x < 320 and y > 305 and y < 325 then 
      a = default.a
    end
end

您可以查看任何其他值(例如,有一个您想要恢复的名称列表)。如果需要,您可以将所有值保存在全局表中,并在以后通过迭代恢复它们pairs(_G)。如果您处理的是表,而不是简单的值,则需要使用深拷贝来保存和恢复值。

于 2014-02-27T17:30:13.193 回答