Сценарий короткого замыкания, сенсорная функция

#lua #roblox

#lua #roblox

Вопрос:

Я пытаюсь найти лучший/более короткий способ уменьшить любое отставание и приложить меньше усилий, так как, если мне нужно что-то изменить в сценарии, мне нужно будет сделать это для каждого из них.

Есть ли лучший способ иметь короткие?

Я попытался сделать так, чтобы у них было одно и то же имя «Glass1» и одно и то же имя «Glass2», но это сработало только с первым, я хотел бы уточнить это.

Вот мой код:

 local End = script.Parent.End local Start = script.Parent.Start local Glass = script.Parent  --Glass1/1-8 are the glasses that fall if touched and they change color to red  local function TouchedGlass11(hit)  local partParent = hit.Parent  local humanoid = partParent:FindFirstChildWhichIsA("Humanoid")  if humanoid then  local num = Glass.Glass11  num.Anchored = false  num.BrickColor = BrickColor.Red()  wait(2)  num:Destroy()  else return  end end  Glass.Glass11.Touched:Connect(TouchedGlass11)  local function TouchedGlass12(hit)  local partParent = hit.Parent  local humanoid = partParent:FindFirstChildWhichIsA("Humanoid")  if humanoid then  local num = Glass.Glass12  num.Anchored = false  num.BrickColor = BrickColor.Red()  wait(2)  num:Destroy()  else return  end end  Glass.Glass12.Touched:Connect(TouchedGlass12)  local function TouchedGlass13(hit)  local partParent = hit.Parent  local humanoid = partParent:FindFirstChildWhichIsA("Humanoid")  if humanoid then  local num = Glass.Glass13  num.Anchored = false  num.BrickColor = BrickColor.Red()  wait(2)  num:Destroy()  else return  end end  Glass.Glass13.Touched:Connect(TouchedGlass13)  local function TouchedGlass14(hit)  local partParent = hit.Parent  local humanoid = partParent:FindFirstChildWhichIsA("Humanoid")  if humanoid then  local num = Glass.Glass14  num.Anchored = false  num.BrickColor = BrickColor.Red()  wait(2)  num:Destroy()  else return  end end  Glass.Glass14.Touched:Connect(TouchedGlass14)  --then I'll do Glass2/1-8 which just turn the brick to green.  local function TouchedGlass21(hit)  local partParent = hit.Parent  local humanoid = partParent:FindFirstChildWhichIsA("Humanoid")  if humanoid then  local num = Glass.Glass21  num.BrickColor = BrickColor.Green()  else return  end end  Glass.Glass21.Touched:Connect(TouchedGlass21)  local function TouchedGlass22(hit)  local partParent = hit.Parent  local humanoid = partParent:FindFirstChildWhichIsA("Humanoid")  if humanoid then  local num = Glass.Glass22  num.BrickColor = BrickColor.Green()  else return  end end  Glass.Glass22.Touched:Connect(TouchedGlass22)  local function TouchedGlass23(hit)  local partParent = hit.Parent  local humanoid = partParent:FindFirstChildWhichIsA("Humanoid")  if humanoid then  local num = Glass.Glass23  num.BrickColor = BrickColor.Green()  else return  end end  Glass.Glass23.Touched:Connect(TouchedGlass23)  local function TouchedGlass24(hit)  local partParent = hit.Parent  local humanoid = partParent:FindFirstChildWhichIsA("Humanoid")  if humanoid then  local num = Glass.Glass24  num.BrickColor = BrickColor.Green()  else return  end end  Glass.Glass24.Touched:Connect(TouchedGlass24)  --Does anyone know a better way?  

пожалуйста, обратите внимание: в «Glass2» и «Glass1» есть 8 стаканов, но скоро я добавлю еще, поэтому я ищу более простой способ.

Ответ №1:

Глядя на ваш код, довольно легко заметить, что вы используете множество функций, к которым прикасаетесь.

Вы можете значительно сократить это, используя цикл for, который повторяет каждую из частей сценария.Родитель.

 local glass = script.Parent  -- iterate through each child and assign the child to the variable object for _, object in pairs(glass:GetChildren()) do  -- Make sure this child of script.Parent is actually a part.  if object:IsA("Part") then  object.Touched:Connect(function(hit)  local partParent = hit.Parent  local humanoid = partParent:FindFirstChildWhichIsA("Humanoid")  if humanoid then  local num = object  num.Anchored = false  num.BrickColor = BrickColor.Red()  wait(2)  num:Destroy()  end  end)  end end  

Вам также не нужно иметь возврат в ваших затронутых функциях.

Комментарии:

1. Спасибо! Это очень помогает, так как мне не нужно добавлять миллионы функций 😀