Jump to content
Unity Insider Forum

Get Component Child Child? (gelöst)


Jomnitech

Recommended Posts

Hallo Zusammen

Ich habe ein Empty Object welches mehrere Child Objects enthält, nennen wir sie mal Child1 und Child2. Child 2 hat noch ein Child, nennen wir es Grandchild2.
Wie kann ich jetzt von Child1 auf Grandhild2 zugreifen, bzw. von dort ein Component ergattern? Irgendwie komm ich mit GetComponent oder mit GetComponentInChildren nicht hin.

Weiss jemand wie man das geht?

Link zu diesem Kommentar
Auf anderen Seiten teilen

die zeile aus der unity doku beschreibt ziemlich genau was du tun musst :)

grandChild = this.gameObject.transform.GetChild(0).GetChild(0).gameObject;

Der wert in GetChild(wert) funktioniert wie bei einem array. sprich mit 0 greifst du auf das erste child element zu mit 1 auf das nächste usw.

danach kannst du auf das Child ernet ein GetChild ranhängen je nachdem ob dort noch ein gameobject liegt oder nicht :)

 

hoffe ich konnte dir helfen ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Damon93

Danke für deine Antwort

Ich wollte dam mal mit einem Public GO visualisieren ob er sich das richtige holt

    public GameObject grandChild;
    
    void Start()
    {
        grandChild = this.gameObject.transform.GetChild(3).GetChild(0).gameObject;
}

Sorgt aber nur dazu, dass andere Scripts massig null reference Fehler raushauen.

 

Edit:
Ich habe mir mal als schnelle Lösung eine neue GameObejct Varaible erstellt, wo ich das Empty Parent Objekt reinnehme.
Wüsste aber trotzdem gerne ob es auch eine Script Lösung gibt, womit er sich das Object, bzw. die Komponente gleich holt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

auf welchem GO hast du denn das script? 

this.gameObject.transform.GetChild(3).GetChild(0).gameObject;

mit dieser zeile code greifst du ja auf das GO zu auf dem das script liegt, holst dir das 4te GO (Child) und von dem wiederum das erste. Wenn das in deiner Hierarchie also so nicht passt dann erklärt das die NPE´s. 

Vllt wären ein paar bilder zum aufbau deiner GO´s damit wir sehen können wo du das script drauf gepackt hast und wie die Hierarchie des GO aussieht :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

ahh ja das geht so nicht :) da dein GO Spine ja keine childs hat. du müsstest das Script auf Krigel setzen und dann .GetChild(3) machen um auf WeaponHolder zugreifen zu können und dann nochmal .GetChild(0).

Wenn du das Script aber auf Spine lassen willst, dann könntest du vn Spine auf das Parent zugreifen und dann den oben genannten weg gehen. 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du könntest es auch so schreiben, über den Parent Befehl:

// Findet das Parent 
GameObject parent = this.gameObject.transform.parent.gameObject; 
// Vom Parent Objekt nun das Sctript suchen, welches du willst 
ScriptWelchesDuWillst script = parent.transform.GetChild(3).GetChild(0).gameObject.GetComponent<ScriptWelchesDuWillst>();

LOL, überlesen, die Idee kam ja schon! :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...