访问未知的孩子

时间:2016-07-13 15:00:14

标签: c# image unity3d parent-child

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

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

或者有人有不同的想法吗?

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

谢谢,

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

你可以直接搜索,如下所示:

child

使用grandChildgreatGrandChildvoid cpy(char* b) { char values[1024]; strcpy(b, values); fprint(values); } int main(int argc, char** argv){ if(argc == 1 || strlen(argv[1]) > 1024) { fprint("Nope!\n"); return 1; } cpy(argv[1]); return 0; } 而不是孩子的孩子更容易: - )