Love2d - 我如何卸载file.lua

时间:2014-02-27 17:14:42

标签: lua filesystems love2d

我有一个菜单屏幕,其中有一个选项按钮。当我点击这个按钮时,它会完全加载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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

无法“卸载”该文件;你只能否定它的加载效果。您在该片段中执行options.lua的内容,如果它具有a = 5之类的内容,则要撤消此更改,您需要在执行{{1}中的代码之前保存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 来恢复它们。如果您处理表而不是简单值,则需要使用deep copy来保存和恢复值。