在Roblox中如何在其他脚本文件中调用函数?

我在工作区嵌入了一个包含函数的脚本文件。我希望可以从工作区子对象中嵌入的脚本文件中调用这些函数。我不想复制粘贴这些函数到多个脚本文件中。如果可能的话,我认为面向对象的方法最好。

原文链接 https://stackoverflow.com/questions/1055534

点赞
stackoverflow用户394428
stackoverflow用户394428

你可以将该函数变成全局函数。在一个脚本中,这样做:

_G.myFunction = function() print("Hello World") end

在另一个脚本中,这样做:

repeat wait() until myFunction myFunction()

通过在_ G中定义函数,必须等待脚本执行分配函数,然后甚至可以在不指定_ G的情况下调用函数。

2010-07-17 12:35:11
stackoverflow用户1870451
stackoverflow用户1870451

你可以将函数定义为全局函数。在一个脚本中执行如下操作:

_G.myFunction = function() print("Hello World") end

在另一个脚本中执行如下操作:

repeat wait() until myFunction myFunction()

通过将一个函数定义为_G中的函数,需要等待脚本执行并分配函数,然后即可调用函数而无需指定_G。

这个做法不再适用于ROBLOX的更新,因为现在在访问其中的项时必须对_G进行索引。

同时在ROBLOX中也不能使用dofile(),如上面所提到的。

回答这个问题:你需要在一个脚本中创建一个函数并将其添加到全局表——_G中,方法是添加_G.MyFunction = function(parameters) end。在另一个脚本中,你需要在_G表中访问它——_G.MyFunction()。

对于ROBLOX脚本编写者经常出现的一个问题是,在创建函数之前尝试访问_G内的函数。解决这个问题的简单方法是使用Camoy的帖子中提到的等待方式:

repeat wait() until _G.MyFunction()
2010-11-22 20:02:07
stackoverflow用户809559
stackoverflow用户809559

最简单的方法是使用 _G 或 shared。

在一个脚本中,

_G.myFunction = function(Arguments)
-- blah
end

在另一个脚本中,您可以使用以下代码。

repeat wait() until _G.myFunction ~= nil
_G.myFunction()

这也可以与全局表 shared 一起使用,而不是 _G。

2010-11-22 20:46:59
stackoverflow用户516657
stackoverflow用户516657

我知道之前已经说过了,但只需使用普通的 _Gshared 就可以访问它。

脚本一

_G.myFunction = function()
     print("Hello, myFunction!")
end

脚本二

repeat wait() until _G.myFunction()
_G.myFunction()

输出

Hello, myFunction!

2010-11-22 21:48:36
stackoverflow用户516768
stackoverflow用户516768

使用另一种替代方法代替 _G,使用全局可用的表格 shared。Shared的使用方式与 _G 相同,但必须在变量标识符之前指定 “shared”,而不像 _G 那样,您可以仅写出变量名而没有 _G(在ROBLOX中不再)。在下列上下文中使用shared:

shared["variablename"] = value

就像在全局堆栈中一样,_G。Shared的示例用法如下:

脚本1

shared["rprint"] = function(array) for i,v in pairs(array) do print(i, v) end end

脚本2

repeat wait() until shared["rprint"]
shared.rprint({"Hello, ", "How", " are", " you?"})

此脚本的输出将是“Hello, How are you?”。

2010-11-22 23:19:14
stackoverflow用户4444615
stackoverflow用户4444615

我会使用BindableEvents或RemoteEvents。 我认为这比使用_G更好。这将允许您保持一切本地化。 您可以使用BindableEvents和RemoteEvents来触发函数,并在脚本之间发送尽可能多的数据。 对于服务器/服务器通信,请使用BindableEvents,并对于服务器/客户端/客户端通信,请使用RemoteEvents。

http://wiki.roblox.com/index.php?title=API:Class/BindableEvent

2016-03-02 18:17:08
stackoverflow用户7332405
stackoverflow用户7332405

你可以使用现在幸运地添加的模块脚本。你可以在那里放置函数,然后在任何其他地方调用和使用它们!

2016-12-22 21:29:58