ROBLOX Studio函数调用功能为每扇门打开

时间:2018-07-31 20:32:31

标签: lua roblox

我对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 here enter image description here

任何帮助,将不胜感激!

1 个答案:

答案 0 :(得分:0)

您可以执行类似的操作立即打开所有监狱的门:

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与按钮单击脚本进行通信,以便将开门功能保持在一个位置。 >