访问未知的孩子

本文关键字:孩子 未知 访问 | 更新日期: 2023-09-27 17:56:58

在我的代码中,我需要找到一个孩子的孩子。

只有第一个子级将始终是同一个子级,但子级的子级在 4 个不同的可能预制件之间随机分配。

在最后一个孩子上,我想禁用它的图像。

如果孩子不会在其他人之间随机分配,这将是理想的代码:

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;
        }
    }
}

但是,由于,第二个孩子各不相同,我不能简单地这样做。

我唯一的选择是做这样的事情吗?

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;
        }
    }
}

还是有人有不同的想法?

我知道这是一个非常令人困惑的问题,但我尽力简化它。

谢谢

访问未知的孩子

那么,为什么不向最后一个子项的预制件添加一个脚本来禁用图像。这样,您只需要在实例化脚本时保留对脚本的引用,而无需去寻找子项。

你可以搜索一下,像这样:

    foreach (var element in list)
    {
        if (!element.IsPicked)
        {
            foreach(var grandChild in element)
            {
                foreach(var greatGrandChild in grandChild)
                {
                    greatGrandChild.GetComponent<Image>().enabled = false;
                }
            }          
        }
    }

使用child更容易,grandChildgreatGrandChild而不是孩子的孩子的孩子:-)