在Roblox中如何在其他脚本文件中调用函数?
我在工作区嵌入了一个包含函数的脚本文件。我希望可以从工作区子对象中嵌入的脚本文件中调用这些函数。我不想复制粘贴这些函数到多个脚本文件中。如果可能的话,我认为面向对象的方法最好。
原文链接 https://stackoverflow.com/questions/1055534
你可以将函数定义为全局函数。在一个脚本中执行如下操作:
_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()
最简单的方法是使用 _G 或 shared。
在一个脚本中,
_G.myFunction = function(Arguments)
-- blah
end
在另一个脚本中,您可以使用以下代码。
repeat wait() until _G.myFunction ~= nil
_G.myFunction()
这也可以与全局表 shared 一起使用,而不是 _G。
我知道之前已经说过了,但只需使用普通的 _G
或 shared
就可以访问它。
脚本一
_G.myFunction = function()
print("Hello, myFunction!")
end
脚本二
repeat wait() until _G.myFunction()
_G.myFunction()
输出
Hello, myFunction!
使用另一种替代方法代替 _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?”。
我会使用BindableEvents或RemoteEvents。 我认为这比使用_G更好。这将允许您保持一切本地化。 您可以使用BindableEvents和RemoteEvents来触发函数,并在脚本之间发送尽可能多的数据。 对于服务器/服务器通信,请使用BindableEvents,并对于服务器/客户端/客户端通信,请使用RemoteEvents。
http://wiki.roblox.com/index.php?title=API:Class/BindableEvent
你可以使用现在幸运地添加的模块脚本。你可以在那里放置函数,然后在任何其他地方调用和使用它们!
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
你可以将该函数变成全局函数。在一个脚本中,这样做:
_G.myFunction = function() print("Hello World") end
在另一个脚本中,这样做:
repeat wait() until myFunction myFunction()
通过在_ G中定义函数,必须等待脚本执行分配函数,然后甚至可以在不指定_ G的情况下调用函数。