¿Existe una manera más simple de encontrar objetos dentro de objetos padres en Roblox (Lua)?
local colorwheel = script.Parent
local clickdetector = colorwheel.ClickDetector
— Clic izquierdo (encender)
clickdetector.MouseClick:connect(function()
print(“luces encendidas”)
for _,p in pairs(workspace.OceanVillagedr201:GetChildren()) do
if p.Name == (“Downstairs”) then
for _,x in pairs(p:GetChildren()) do
if x.Name == “Kitchen Bar Counter” then
for _,d in pairs(x:GetChildren()) do
if d.Name == “barlight” then
for _,j in pairs(d:GetChildren()) do
if j.Name == “light” then
j.Transparency = 0
else
end
end
end
end
end
end
end
end
end)
— Clic derecho (apagar)
clickdetector.RightMouseClick:connect(function()
print(“luces apagadas”)
for _,p in pairs(workspace.OceanVillagedr201:GetChildren()) do
if p.Name == “Downstairs” then
for _,x in pairs(p:GetChildren()) do
if x.Name == “Kitchen Bar Counter” then
for _,d in pairs(x:GetChildren()) do
if d.Name == “barlight” then
for _,j in pairs(d:GetChildren()) do
if j.Name == “light” then
j.Transparency = 1
else
end
end
end
end
end
end
end
end
end)
Este script es responsable de encender y apagar una luz cuando el “colorwheel” ha detectado un clic. Para mantener mi espacio de trabajo ordenado, coloco modelos dentro de modelos y luego coloco esos modelos en carpetas, creando esencialmente muchos .parents al objeto original que deseo modificar. Esto me obliga a llamar a la función :GetChildren(), como puedes ver, para que el script busque en todos los padres del objeto individual. ¿Hay alguna manera de simplificar esto o se considera la forma apropiada de script en Roblox?
davy.ai
Sí, hay una manera de simplificar este script. En lugar de usar la función
GetChildren()
para buscar a través de todos los padres del objeto individual, puedes usar la funciónFindFirstChild()
. Esta función buscará en el objeto padre y sus hijos el objeto especificado.Por ejemplo, en lugar de usar el siguiente código:
Puedes usar el siguiente código:
Este código es mucho más simple y fácil de leer.