是否有更简单的方法在 Roblox 的父对象中查找对象 (Lua)
Is there simpler way of finding objects within parent objects on Roblox (Lua)
local colorwheel = script.Parent
local clickdetector = colorwheel.ClickDetector
--- Left mouse click (turn on)
clickdetector.MouseClick:connect(function()
print("lights on")
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)
--- Right mouse click (turn off)
clickdetector.RightMouseClick:connect(function()
print("lights off")
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)
此脚本负责在“色轮”检测到点击时打开和关闭灯。为了让我的工作区井井有条,我将模型放入模型中,然后将这些模型放入文件夹中,实质上是为我要修改的原始对象创建了很多 .parents。这导致我不得不调用 :GetChildren() 函数,如您所见,因此我可以让脚本搜索所有 parents 对于单个对象。有没有办法简化这个或者这是否被认为是在 Roblox 上编写脚本的合适方式?
您可以像在 table 上查找属性一样为 children 个模型编制索引。您可以为名称中没有空格的 children 使用点运算符,或者为有空格的名称使用方括号。
您可以像这样访问 children 已知路径:
local village = workspace.OceanVillagedr201
local light = village.Downstairs["Kitchen Bar Counter"].barlight.light
light.Transparency = 0
请注意,如果您输入的任何名称有误,或者 objects 中的任何一个尚未加载,此方法将引发错误。
local colorwheel = script.Parent
local clickdetector = colorwheel.ClickDetector
--- Left mouse click (turn on)
clickdetector.MouseClick:connect(function()
print("lights on")
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)
--- Right mouse click (turn off)
clickdetector.RightMouseClick:connect(function()
print("lights off")
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)
此脚本负责在“色轮”检测到点击时打开和关闭灯。为了让我的工作区井井有条,我将模型放入模型中,然后将这些模型放入文件夹中,实质上是为我要修改的原始对象创建了很多 .parents。这导致我不得不调用 :GetChildren() 函数,如您所见,因此我可以让脚本搜索所有 parents 对于单个对象。有没有办法简化这个或者这是否被认为是在 Roblox 上编写脚本的合适方式?
您可以像在 table 上查找属性一样为 children 个模型编制索引。您可以为名称中没有空格的 children 使用点运算符,或者为有空格的名称使用方括号。
您可以像这样访问 children 已知路径:
local village = workspace.OceanVillagedr201
local light = village.Downstairs["Kitchen Bar Counter"].barlight.light
light.Transparency = 0
请注意,如果您输入的任何名称有误,或者 objects 中的任何一个尚未加载,此方法将引发错误。