我有一个菜单屏幕,其中有一个选项按钮。当我点击这个按钮时,它会完全加载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
答案 0 :(得分:1)
虽然Paul的答案是一个选项,但您可以采用不同的方法: 你正在考虑这种方式会让你感到非常悲伤,因为在Lua中,加载文件的许多其他语言并不意味着在不同的时间运行代码。虽然这可能会让您更改代码而不是您想要的代码,但可以考虑为GUI状态创建一个变量,并仅在该变量具有特定值时绘制您想要的内容。例如:
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
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 Frames和Quickie
答案 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来保存和恢复值。