2016-07-13 3 views
0

私のコードでは、私は子供の子供の子供を見つける必要があります。未知の子供へのアクセス

最初の子のみが常に同じ子になりますが、子の子は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; 
     } 
    } 
} 

誰か別の考えがありますか?

これは非常に分かりやすい質問ですが、私はそれを単純化するために最善を尽くしました。

おかげで、

+0

子の子の子よりもchildgrandChildgreatGrandChildを使用する方が簡単です

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

を**あなたの子供がやってみましょうそれはあなたの 'IsPicked'チェックに基づいて独自に有効/無効にできるように、スクリプトを作成してリストのすべての要素に添付します。別のスクリプトからそれらのすべてを通過する必要はありません。 –

答えて

1

なぜ画像を無効に最後の子のプレハブにスクリプトを追加していません。そうすれば、スクリプトをインスタンス化して子供を探すのではなく、スクリプトへの参照を保持するだけです。

+0

パーフェクト、私はそれを考えなかったとは信じられない!ありがとう:) – Alox

1

あなたは、このような何かを検索することができます:それはむしろ:-)

関連する問題