访问未知 child
Accessing unknown child
在我的代码中,我需要找到一个 child of a child of a child.
只有第一个 child 将始终相同 child 但 child 的 child 在 4 个不同的可能预制件之间随机分配。
最后一个 child 我想禁用它的图像。
如果 child 不会在其他代码之间随机化,这将是理想的代码:
protected void SetUnpickedPrizesVisibility(bool isVisible)
{
foreach (var element in list)
{
if (!element.IsPicked)
{ element.transform.FindChild("FirstChild").FindChild("SecondChild").FindChild("ThirdChild").GetComponent<Image>().enabled = false;
}
}
}
但是,由于 SecondChild 各不相同,我不能简单地这样做。
我是做这种事情的唯一选择吗?
protected void SetUnpickedPrizesVisibility(bool isVisible)
{
foreach (var element in list)
{
if (!element.IsPicked)
{
if(element.transform.FindChild("FirstChild").FindChild("SecondChild1"))
element.transform.FindChild("FirstChild").FindChild("SecondChild1").FindChild("ThirdChild").GetComponent<Image>().enabled = false;
if(element.transform.FindChild("FirstChild").FindChild("SecondChild2"))
element.transform.FindChild("FirstChild").FindChild("SecondChild2").FindChild("ThirdChild").GetComponent<Image>().enabled = false;
if(element.transform.FindChild("FirstChild").FindChild("SecondChild3"))
element.transform.FindChild("FirstChild").FindChild("SecondChild3").FindChild("ThirdChild").GetComponent<Image>().enabled = false;
}
}
}
或者有人有不同的想法?
我知道这是一个阅读起来非常混乱的问题,但我尽力简化了它。
谢谢,
那么为什么不在最后一个 child 的预制件中添加一个禁用图像的脚本。这样你只需要在实例化脚本时保留对脚本的引用而不是去寻找 children.
你可以直接搜索,像这样:
foreach (var element in list)
{
if (!element.IsPicked)
{
foreach(var grandChild in element)
{
foreach(var greatGrandChild in grandChild)
{
greatGrandChild.GetComponent<Image>().enabled = false;
}
}
}
}
使用 child
、grandChild
和 greatGrandChild
比使用 child of child of child 更容易:-)
在我的代码中,我需要找到一个 child of a child of a child.
只有第一个 child 将始终相同 child 但 child 的 child 在 4 个不同的可能预制件之间随机分配。
最后一个 child 我想禁用它的图像。
如果 child 不会在其他代码之间随机化,这将是理想的代码:
protected void SetUnpickedPrizesVisibility(bool isVisible)
{
foreach (var element in list)
{
if (!element.IsPicked)
{ element.transform.FindChild("FirstChild").FindChild("SecondChild").FindChild("ThirdChild").GetComponent<Image>().enabled = false;
}
}
}
但是,由于 SecondChild 各不相同,我不能简单地这样做。
我是做这种事情的唯一选择吗?
protected void SetUnpickedPrizesVisibility(bool isVisible)
{
foreach (var element in list)
{
if (!element.IsPicked)
{
if(element.transform.FindChild("FirstChild").FindChild("SecondChild1"))
element.transform.FindChild("FirstChild").FindChild("SecondChild1").FindChild("ThirdChild").GetComponent<Image>().enabled = false;
if(element.transform.FindChild("FirstChild").FindChild("SecondChild2"))
element.transform.FindChild("FirstChild").FindChild("SecondChild2").FindChild("ThirdChild").GetComponent<Image>().enabled = false;
if(element.transform.FindChild("FirstChild").FindChild("SecondChild3"))
element.transform.FindChild("FirstChild").FindChild("SecondChild3").FindChild("ThirdChild").GetComponent<Image>().enabled = false;
}
}
}
或者有人有不同的想法?
我知道这是一个阅读起来非常混乱的问题,但我尽力简化了它。
谢谢,
那么为什么不在最后一个 child 的预制件中添加一个禁用图像的脚本。这样你只需要在实例化脚本时保留对脚本的引用而不是去寻找 children.
你可以直接搜索,像这样:
foreach (var element in list)
{
if (!element.IsPicked)
{
foreach(var grandChild in element)
{
foreach(var greatGrandChild in grandChild)
{
greatGrandChild.GetComponent<Image>().enabled = false;
}
}
}
}
使用 child
、grandChild
和 greatGrandChild
比使用 child of child of child 更容易:-)