ROBLOX Studio 调用每个门打开函数的函数

我是 ROBLOX 开发中的新手,还不太知道如何让对象相互通信。

我有 16 个单元格,每个单元格都有一个独立的打开和关闭按钮。这些都能工作。我想创建一个按钮,可以同时打开所有门。

function onClicked()
    script.Parent.Parent.Door.Transparency = 1
    script.Parent.Parent.Door.CanCollide= false
end

script.Parent.ClickDetector.MouseClick:connect(onClicked)

上面的函数在每个单元格上都能工作。当我点击另一个按钮时,我想遍历每个单元格并触发它。

下面的代码是我尝试让它们全部触发的一个例子!

local part = workspace.OpenButton
local clickDetector = Instance.new("ClickDetector")

local function onMouseClick(player)
    for _, child in pairs(workspace.PrisonCell:GetChildren()) do
        print(child)
        child:connect(child.Door.onClicked)
    end
end

clickDetector.Parent = part
part.Parent = workspace

clickDetector.MouseClick:connect(onMouseClick)

enter image description hereenter image description here

有任何关于此的帮助将不胜感激!

点赞
用户7632578
用户7632578

你可以使用类似这样的方法来一次性打开所有监狱的门:

local part = workspace.OpenButton
local clickDetector = Instance.new("ClickDetector")

local function onMouseClick(player)
  for _, child in pairs(workspace.PrisonCell:GetChildren()) do
    child.Door.Transparency = 1
    child.Door.CanCollide = false
   end
end

clickDetector.Parent = part
part.Parent = workspace

clickDetector.MouseClick:connect(onMouseClick)

使用上述解决方案的缺点是,如果你想改变打开门的脚本,你必须同时更改每个单独的单元按钮和这个主按钮脚本。如果你认为这可能会成为未来的问题,我建议在ServerScriptService中编写一个主脚本,使用BindableEvents与按钮点击脚本通信,以便将门打开功能放在一个地方。

2018-08-01 00:04:18