我正在用love-2d框架创建一个游戏,我想提供一个蒸汽车间项目(第三方场景)。 Love2D提供了一个很好的界面,但是如果我想通过该界面提供第三方场景则非常糟糕,因为他们可以用它做任何事情。所以我决定通过提供这样的自定义函数来封装love2D:
function MyMenu:scenario()
local game = {
draw = {
circle = love.graphics.circle
},
timer = {
sleep = love.timer.sleep
},
}
local scenario = love.filesystem.load("scenario.lua")
-- Disable love for the custom scenarios
local love = nil
scenario()
end
我原以为scenario.lua
会知道game
变量,但不知道love
变量,但是,当我尝试执行此代码时,它会给我以下错误:
Error: love/scenario.lua:1: attempt to index global 'game' (a nil value)
那么有没有办法通过为它提供一个小的子接口来隐藏一些接口?在这个具体的例子中,我想为绘制圆形和love.timer.sleep
提供相同的功能,就像love2d所做的那样,但没有别的。
另一个问题是为什么scenario.lua
看到local love = nil
但看不到local game
变量,我发现这是相互排斥的。