运行组的脚本以访问组部件中的功能

时间:2017-05-22 22:43:14

标签: lua roblox

我只是想知道roblox是否有人遇到过他们需要从另一个脚本运行脚本的情况。我的情况是我正在制作游戏的控制点系统。我需要能够知道是否捕获了其他点以捕获下一个点,所以我试图在它上面编写一个控制器,但我不确定如何从控制点脚本中访问这些函数。

1 个答案:

答案 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并向下滚动一半。