【发布时间】:2021-04-06 16:58:00
【问题描述】:
我对@987654321@ Roblox 插件有疑问。它将模型转换为脚本。我的问题是它如何转换脚本?如果我有一个带有脚本的模型,它将运行脚本,就好像它在我放置它的模型中一样。我们都知道“scriptModel.Source”仅适用于插件,如果将其转换为脚本,则该脚本不是插件脚本。只是一个普通的脚本。据我所知,这个函数是做什么的:
function sandbox(var,func)
local env = getfenv(func)
local newenv = setmetatable({},{
__index = function(self,k)
if k=="script" then
return var
else
return env[k]
end
end,
})
setfenv(func,newenv)
return func
end
这似乎与环境有关。有人可以帮助我更多地理解这一点吗?我想了解它是如何运作的并且运作良好。
我所理解的是,'var' 是一个脚本实例 (Instance.new)。然后它获取函数的环境/范围。当 'script' 被索引时,它返回那个 'var',否则它返回函数环境变量。我是不是搞错了什么?
谢谢! :D
【问题讨论】: