{LUA} 如何在脚本中触发另一个脚本?

{LUA} How to fire another script in script?

我有一个来自 Lua/Roblox 的问题! 基本上,我想从脚本中触发脚本。这听起来像是一个愚蠢的问题,但实际上它不是:P

例如:

我有一个脚本:ServerScriptStorage 中的 script1。

而且,我想对其进行编码以触发 script2 的内容。

示例:

脚本 1 的内容:

game.Players.PlayerAdded:Connect(function()

  HERE SCRIPT2 FIRING!

end)

脚本 2 的内容:

print("This message is triggered by event in script!")

我想这是相当简单的任务,所以请给我最简单和最短的代码版本。我不需要任何排他性,例如在 1 中启动 2 个脚本。我是初学者脚本,所以请保持简单。

谢谢,NorteX。

workspace.SCRIPT2.Disabled = true -- Disables SCRIPT2 , you can remove this and manually disable it in SCRIPT2's properties. game.Players.PlayerAdded:Connect(function() workspace.SCRIPT2.Disabled = false -- Activates SCRIPT2. You can alter the "disabled" state multiple time to make it reboot and operate more than once. end) 此外,您可以将 workspace.SCRIPT2.Disabled 替换为第二个脚本所在的位置,例如 workspace.FolderOne.scripts.SCRIPT2.Disabled 。只需确保它指向脚本并保持 "disabled" 部分打开,这样它就知道禁用/启用它。

在纯 Lua 中,使用 dofile 可能最有意义。然而,在 Roblox 中,方法肯定有很大不同。我建议这样做的方法是为 "Script2" 使用 ModuleScript。然后您将使用 require() 加载脚本。因为 "requiring" 一个脚本缓存了未来 "requires" 的返回值,这意味着 ModuleScript 的内容只会被执行一次。因此,如果您有想要多次 运行 的代码,您应该将它封装在 ModuleScript returns.

的函数中

根据您的设置,代码如下所示:

脚本 1:

local script2 = require(game.ServerScriptService.Script2)

game.Players.PlayerAdded:Connect(function(player)
    script2()
end)

脚本 2:

-- In game.ServerScriptService.Script2 as a ModuleScript
return function()
    print("This message is triggered by event in script!")
end

查看 ModuleScripts 的文档以了解更多信息。