2016-07-13 53 views
0

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

只有第一个孩子将永远是同一个孩子,但是孩子的孩子在四种不同的可能预制之间随机化。

对最后一个孩子我想禁用它的形象。

这里将是理想的代码,如果孩子不愿别人之间随机:

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

或者是否有人有不同的想法?

我知道这是一个非常混乱的阅读问题,但我尽我所能来简化它。

感谢,

+0

**让你的孩子做它**:创建一个脚本并将其附加到列表中的每个元素,以便它们可以根据您的“IsPicked”检查自行启用/禁用。不需要从另一个脚本中浏览所有的内容。 –

回答

1

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

+0

完美,我不敢相信我没有想到!谢谢 :) – Alox

1

你可以只通过搜索,这样的事情:

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

它更容易使用childgrandChildgreatGrandChild,而不是孩子的孩子的孩子:-)