Jomnitech Geschrieben 23. Juni 2018 Melden Share Geschrieben 23. Juni 2018 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 More sharing options...
Damon93 Geschrieben 23. Juni 2018 Melden Share Geschrieben 23. Juni 2018 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 More sharing options...
Jomnitech Geschrieben 23. Juni 2018 Autor Melden Share Geschrieben 23. Juni 2018 @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 More sharing options...
Damon93 Geschrieben 23. Juni 2018 Melden Share Geschrieben 23. Juni 2018 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 More sharing options...
Jomnitech Geschrieben 23. Juni 2018 Autor Melden Share Geschrieben 23. Juni 2018 Das Script ist eben auf Child1. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Damon93 Geschrieben 23. Juni 2018 Melden Share Geschrieben 23. Juni 2018 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 More sharing options...
Jomnitech Geschrieben 23. Juni 2018 Autor Melden Share Geschrieben 23. Juni 2018 Habe ich fast befürchtet, dass das nich geht 🙃. Habe das jetzt auch so gemacht, dass es eine Referenz zum Parent hat. Vielen Dank für deine Hilfe. -closed- Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 27. Juni 2018 Melden Share Geschrieben 27. Juni 2018 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! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.