2016-07-13 5 views
0

In meinem Code muss ich ein Kind eines Kindes eines Kindes finden.Zugriff auf unbekanntes Kind

Nur das erste Kind wird immer das gleiche Kind sein, aber das Kind des Kindes wird zwischen 4 verschiedenen möglichen Prefabs randomisiert.

auf das letzte Kind möchte ich es Bild zu deaktivieren.

hier wäre der ideale Code, wenn das Kind nicht zwischen anderen randomisiert werden würde:

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

Aber da ändert sich die SecondChild, das kann ich nicht einfach tun.

Ist meine einzige Option, so etwas zu tun?

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

Oder hat jemand eine andere Idee?

Ich weiß, das ist eine sehr verwirrend zu lesen Frage, aber ich versuchte mein Bestes, um es zu vereinfachen.

Danke,

+0

** Lassen Sie tun it **: Erstellen Sie ein Skript und hängen Sie es an jedes Element in der Liste an, so dass diese basierend auf Ihrer 'IsPicked'-Prüfung aktiviert/deaktiviert werden können. Es ist nicht nötig, alle durch ein anderes Skript zu durchlaufen. –

Antwort

1

Warum also nicht ein Skript zum Fertig des letzten Kind hinzufügen, die das Bild deaktiviert. Auf diese Weise müssen Sie nur einen Verweis auf das Skript behalten, wenn Sie es instanziieren und nicht nach den Kindern suchen.

+0

Perfekt, ich kann nicht glauben, dass ich nicht daran gedacht habe! Vielen Dank :) – Alox

1

können Sie nur die Suche durch, so etwas wie dieses:

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

Es ist einfacher child zu verwenden, grandChild und greatGrandChild eher als Kind des Kindes der Kinder :-) Ihre Kinder