如何为通过`loadfile`加载的脚本提供一个环境?

时间:2017-10-06 06:17:26

标签: lua

我正在用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变量,我发现这是相互排斥的。

0 个答案:

没有答案