如何在工作区中使单击检测器启用 StarterGui 中的脚本?(Roblox Studio)

我是一个脚本新手,刚开始,请非常具体地回答。我有一个模型(名为 SpawnBox),里面有一个单击检测器(名为 ClickDetector)。我还有一个在 StarterGui 中的 Gui(名为 Gui)。这个 GUI 中有一个框架(名为 Frame),其中目前有一个本地脚本(名为 LocalScript)。此本地脚本当前已禁用,那么我该如何使用上述单击检测器启用脚本?提前致谢。

点赞
用户15250066
用户15250066

你可以创建一个作为 Click Detector 的子级的普通脚本,在其中进行以下操作:

  • 将 Click Detector 引用为 script.Parent
  • 创建一个 .MouseClick 函数,在其中编写代码以启用 LocalScript

.MouseClick 函数的组成:<Click Detector>.MouseClick:Connect(function(player) end)

<Click Detector>.MouseClick 函数带有一个参数,即点击按钮的玩家(在 game.Players 中)。现在你需要引用玩家的 PlayerGui,因为这是每个个体玩家的 Gui 所在的地方,也是它们和它们的属性可以被更改的唯一地方。由于参数引用了 game.Players 中的玩家,你可以直接使用 <player>.PlayerGui 以获取 PlayerGui。(如果你运行游戏并单击资源管理器标签旁的箭头,则会弹出一个玩家列表(或者只是你自己)。然后单击您的玩家旁边的箭头,您将看到 PlayerGui。如果继续往下走,您将看到名为 Gui 的 ScreenGui,如果再单击一次,您将看到名为 Frame 的 Frame。)在这个框架内是我们要启用的 LocalScript。

Disabled 是脚本的布尔值(truefalse)值属性。为了引用 Lua 中的属性,我们使用一个句点.。一旦我们获取了脚本,我们就可以这样做 <LocalScript>.Disabled = false 以启用它。下面是你的代码结构应该是什么样子的:

  • 定义你的 Click Detector
  • 用一个玩家点击作为参数打开一个 .MouseClick 函数
  • 通过使用点 . 获取 LocalScript,例如:local script = .PlayerGui.Gui.Frame.LocalScript
  • 通过设置 script.Disabled = false 来启用脚本
  • 结束.MouseClick 函数

额外帮助的链接:

https://developer.roblox.com/en-us/api-reference/class/ClickDetector

https://developer.roblox.com/en-us/api-reference/class/PlayerGui

编辑:

这里是资源管理器中脚本的层次结构:

ClickDetector

└ Script

现在您的代码应该像这样:

local ClickDetector = script.Parent -- 引用你的 Click Detector 以在脚本中使用

ClickDetector.MouseClick:Connect(function(player) --'player' 是点击的玩家
     local enableScript = player.PlayerGui.Gui.Frame.LocalScript --通过使用点 '.' 引用您的脚本
     enableScript.Disabled = false -- 将 'Disabled' 属性设置为false(意味着现在已启用)
end) --关闭 .MouseClick 函数

我推荐您观看 AlvinBlox 的这个视频,如果你需要关于对象引用的帮助:

https://www.youtube.com/watch?v=_K7stCkqFBY

2021-05-05 03:42:28