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

时间:2009-06-28 19:07:52

标签: lua roblox

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

7 个答案:

答案 0 :(得分:5)

_G的替代方法是使用全局可用的表共享。共享的使用方式与_G相同,但您必须在变量标识符之前指定“shared”,这与_G不同,其中只能在没有_G 的情况下写出变量的名称(not anymore in ROBLOX )。共享用于以下上下文:

shared["variablename"] = value

就像在全局堆栈中一样,_G。 共享的示例用法:

脚本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?"})

这个脚本的输出是“你好,你好吗?”

答案 1 :(得分:2)

  

您可以将该功能设为全局。在   一个脚本执行此操作:

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

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

repeat wait() until myFunction myFunction()
     

通过定义函数_G必须   等待脚本执行   分配功能,然后你就可以   甚至没有调用该功能   指定_G。

这不起作用,因为由于ROBLOX更新,您现在必须在访问其中的项目时索引_G。

你也不能在ROBLOX中使用dofile(),如上所述。

回答这个问题:你需要在一个脚本中创建一个函数到全局表 - _G,通过添加_G.MyFunction = function(参数)结束。在另一个脚本中,您需要在_G表中访问它 - _G.MyFunction()。

ROBLOX脚本编写者出现的一个常见问题是,您在创建之前尝试访问_G内的函数。解决这个问题的一个简单方法是在创建之前添加一个等待,如Camoy的帖子所示:

repeat wait() until _G.MyFunction() 

答案 2 :(得分:2)

我知道之前已经说过,但只需使用普通的_G或共享来访问它。

脚本一

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

脚本二

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

<强>输出

  

您好,myFunction!

答案 3 :(得分:1)

您可以将该功能设为全局。在一个脚本中执行此操作:

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

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

repeat wait() until myFunction myFunction()

通过定义函数_G,您必须等待脚本执行分配函数,然后即使不指定_G也可以调用该函数。

答案 4 :(得分:1)

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

在一个脚本中,

_G.myFunction = function(Arguments)

-- blah

end

在另一个脚本中,您将使用此代码。

repeat wait() until _G.myFunction ~= nil

_G.myFunction()

这也适用于共享的全局表,而不是_G。

答案 5 :(得分:1)

我会使用BindableEvents或RemoteEvents。我认为这比使用_G更好。这将允许您保持本地的一切。您可以使用Bindableevents和RemoteEvents来触发函数,并在脚本之间来回发送所需的数据。使用BindableEvents进行服务器/服务器通信,使用R​​emoteEvents进行服务器/客户端 - 客户端/服务器通信。

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

答案 6 :(得分:0)

您可以使用感谢添加的模块脚本。您可以将功能放在那里,然后在其他地方调用并使用它们!