Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plugins 有人能解释一下这段代码在Roblox中是如何工作的吗?_Plugins_Lua_Roblox - Fatal编程技术网

Plugins 有人能解释一下这段代码在Roblox中是如何工作的吗?

Plugins 有人能解释一下这段代码在Roblox中是如何工作的吗?,plugins,lua,roblox,Plugins,Lua,Roblox,我有一个关于Roblox插件的问题。它将模型转换为脚本。我这里的问题是它如何转换脚本?如果我有一个带有脚本的模型,它会像在我放置脚本的模型中一样运行脚本。我们都知道“scriptModel.Source”只适用于插件,如果它将其转换为脚本,则该脚本不是插件脚本。只是一个普通的脚本。据我所知,这个函数的作用是: 函数sandboxvar,func 本地环境=getfenvfunc local newenv=setmetatable{}{ __索引=函数自身,k 如果k==脚本,那么 返回值 其他的

我有一个关于Roblox插件的问题。它将模型转换为脚本。我这里的问题是它如何转换脚本?如果我有一个带有脚本的模型,它会像在我放置脚本的模型中一样运行脚本。我们都知道“scriptModel.Source”只适用于插件,如果它将其转换为脚本,则该脚本不是插件脚本。只是一个普通的脚本。据我所知,这个函数的作用是:

函数sandboxvar,func 本地环境=getfenvfunc local newenv=setmetatable{}{ __索引=函数自身,k 如果k==脚本,那么 返回值 其他的 返回环境[k] 终止 终止 } 塞芬夫蓬克,新环境 返回函数 终止 这似乎与环境有关。有人能帮我多了解一点吗?我想了解它是如何工作的,并且工作得很好

我所了解的只是,‘var’是一个脚本实例instance.new。然后获取函数的环境/范围。当'script'被索引时,它返回'var',否则它返回函数环境变量。我做错什么了吗


谢谢D

此函数将用一个将任何非赋值索引与脚本中继到var的环境替换func的环境


这与getfenvfunc.script=var类似,唯一的区别是您不修改原始环境。

此函数将用一个将任何非赋值索引与脚本中继到var的环境替换func的环境


这与getfenvfunc.script=var类似,唯一的区别是不修改原始环境。

var:脚本或模型

芬奇:我不知道

首先,它得到func的环境。然后,将使用此属性创建一个新环境:

如果索引位置为空,则会触发索引。然后,如果索引名为script,则返回脚本。否则,它将返回函数环境中k的索引位置。
func的环境被设置为新环境,然后返回。

var:脚本或模型

芬奇:我不知道

首先,它得到func的环境。然后,将使用此属性创建一个新环境:

如果索引位置为空,则会触发索引。然后,如果索引名为script,则返回脚本。否则,它将返回函数环境中k的索引位置。
func的环境设置为新环境,然后返回。

关于return env[k],为什么不直接返回env?另外,索引接收哪些参数?self,然后是什么被索引,但是被索引的可以是类似于script.Parent的东西那么它是“script”而不是“script.Parent”呢?或者第三个参数是否有一个“父对象”等等?关于return env[k],为什么不只是return env?另外,索引接收哪些参数?self,然后是什么被索引,但是被索引的可以是类似于script.Parent的东西那么它是“script”而不是“script.Parent”呢?或者第三个参数是否有一个“父对象”等等?为什么不直接使用getfenvfunc.script=var?这不是更容易吗?比如这里:@Battledash2我不知道,我还没有写那段代码。唯一的区别是您不更改原始环境。例如,这将允许您为共享一个公共环境的不同功能使用不同的脚本。您的意思是什么?我不确定我是否理解……假设您在同一环境中有两个函数。您可以执行sandboxvar1,func1和sandboxvar2,func2。getfenvfunc1.test=hello!。现在getfenvfunc1.script是var1,getfenvfunc2.script是var2,getfenvfunc1.test是hello!getfenvfunc2.test是hello!,因为他们的环境将脚本以外的任何内容重定向到原始环境。我不确定实际的用例,因为我不是Roblox专家为什么不直接使用getfenvfunc.script=var?这不是更容易吗?比如这里:@Battledash2我不知道,我还没有写那段代码。唯一的区别是您不更改原始环境。例如,这将允许您为共享一个公共环境的不同功能使用不同的脚本。您的意思是什么?我不确定我是否理解……假设您在同一环境中有两个函数。您可以执行sandboxvar1,func1和sandboxvar2,func2。getfenvfunc1.test=hello!。现在getfenvfunc1.script是var1,getfenvfunc2.script是var2,getfenvfunc1.test是hello!getfenvfunc2.test是hello!,因为他们的环境将脚本以外的任何内容重定向到原始环境。我不确定实际的用例,因为我不是Roblox专家