【问题标题】:Accessing unknown child访问未知的孩子
【发布时间】:2016-11-16 06:06:37
【问题描述】:

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

只有第一个孩子永远是同一个孩子,但孩子的孩子在 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;
        }
    }
}

但是,由于 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;
        }
    }
}

还是有人有不同的想法?

我知道这是一个非常难以阅读的问题,但我已尽力简化它。

谢谢,

【问题讨论】:

  • 让您的孩子去做:创建一个脚本并将其附加到列表中的每个元素,以便他们可以根据您的 IsPicked 检查自行启用/禁用。无需从不同的脚本中遍历所有这些。

标签: c# image unity3d parent-child


【解决方案1】:

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

【讨论】:

  • 完美,我不敢相信我没想到!谢谢:)
【解决方案2】:

你可以直接搜索,像这样:

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

使用childgrandChildgreatGrandChild 比使用child of child 的child 更容易:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多