我只是想知道roblox是否有人遇到过他们需要从另一个脚本运行脚本的情况。我的情况是我正在制作游戏的控制点系统。我需要能够知道是否捕获了其他点以捕获下一个点,所以我试图在它上面编写一个控制器,但我不确定如何从控制点脚本中访问这些函数。
答案 0 :(得分:0)
是的! ROBLOX提供了一个非常有用的功能,称为ModuleScripts,用于从其他脚本调用脚本。 The icon for ModuleScripts looks the same as the icon for regular Scripts except with a little brick in the bottom-right.
它的工作方式是常规脚本可以使用特殊的require()
函数在游戏中调用ModuleScripts。最简单的解释方法是举例。
首先,让我们假设我们有一个Script和一个ModuleScript。脚本将位于game.Workspace.normalScript
,而ModuleScript将位于part
处名为game.Workspace.part.moduleScript
的砖块内。
moduleScript
将包含以下代码:
script.Parent.Transparency = .5 --"Parent" is the part since this ModuleScript is located inside the part
现在,normalScript
将包含以下代码:
require(game.Workspace.part.moduleScript)
当您运行游戏时,normalScript
将执行moduleScript
,将part
的透明度更改为.5。当一个人在ModuleScript上调用require()
时,它就像是一个被调用的普通函数。 moduleScript
表现得好像它是一个函数,而ModuleScripts在很大程度上与函数的作用方式相同。
这也意味着ModuleScripts可以返回像函数一样的值。例如,如果我们在moduleScript
中有以下代码:
return 3+3
现在,我们的脚本将包含以下代码:
local number = require(game.Workspace.moduleScript)
print(number) --> 6
此代码将从控制台打印“6”,因为moduleScript
返回6.正如您可能猜到的,这意味着ModuleScripts比简单地远程执行代码有更多的用途。
以下是ModuleScripts的另外两个使用示例:
1)回归功能:
moduleScript
:
return function()
print("hey")
end
normalScript
:
local func = require(game.Workspace.moduleScript)
func() --> hey
2)返回下面的apple
模块:
moduleScript
:
local apple = {}
apple.flavor = "sweet"
return apple
normalScript
:
local fruit = require(game.Workspace.moduleScript)
print(fruit.flavor) --> sweet
这些是ModuleScript使用的相当愚蠢的例子,但ModuleScripts实际上可以是非常强大的工具。有关一些很酷的示例,请访问ROBLOX Wiki page on ModuleScripts并向下滚动一半。