Frage von Crysali, 22

Unity: Erstelltes Object in einer Variable speichern?

Ich bin etwas verwirrt, weil das folgende nicht funktioniert:

    public GameObject test = TestObject;

TestObject ist beispielsweise ein Sprite, welches ich in der Hierarchy erstellt habe. Das gennante Codebeispiel habe ich in einem anderen leeren Object in einem Skript geschrieben. Unity behauptet aber nun, das TestObject würde im Kontext nicht existieren.

Ich habe es nur geschafft, TestObject in einer Variable zu speichern, wenn das Skript an TestObject angehängt wurde. Bedeutet das nun, dass ich für jedes Object ein eigenes Skript schreiben muss, um es in einer gloablen ( static) Variable ( mit Array beispielsweise) speichern zu können ? Oder wie mache ich das, wenn ich verschiedene Objecte in einer Array Variable in einem Skript speichern möchte, in der Art von verschiedenen Gegnern bei TD Spielen, zum Beispiel ?

Antwort
von Serij92, 12

Unity war bei mir lange her. Aber das Problem ist dass TestObject nicht in dieser Klasse existiert. 

Versuch mal einfach public GameObject test;
dann müsste das Feld "Test" bei dieser Kompoenten in der GUI erscheinen und da kannst du das Objekt dann mit der Maus reinziehen

Kommentar von Crysali ,

Danke, mich wundert das aber sehr, dass ein GameObject nicht global existiert. Muss ich da die Box bei der Option "Static" aktivieren ( Inspector), damit es global existiert ?

Das mit dem Erscheinen in der GUI ist so eine Sache. Ich versuche gerade eine Klasse zu schreiben, in der ich alle Werte in Variablen speichere ( Native-List), so etwas wie Geschwindigkeit, Schaden, Gesundheit und so weiter, was ich dann global abrufen kann mit beispielsweise "Natives.Velocity". Das Problem ist aber, das "static", was man anscheinend braucht, um die Variable abrufbar zu machen, selbige von der Object GUI verschwinden lässt und man es nur noch im Skript selbst ändern kann. Unity aktualisiert das auch nicht, wenn man es wieder zurückändert, ich weiß nicht so Recht, woran das liegt.

Kommentar von Serij92 ,

Ich würde dir empfehlen die Grundlagen der Objektorientierung nocheinmal anzuschauen.

Mit Klassen kann man Objekte erstellen, das heißt wenn du ein Skript auf eine Komponente ziest, ist das an das GameObject geknüpft. Static wäre Global für alle und kann somit nicht an ein Objekt in der GUI gebunden.

Ich bin jetzt leider zu wenig in Unity drin, um dir zu sagen, wie du in Unity Settings auslagerst, mir fällt da nur ein eine Singleton Klasse zu schreiben.

Kommentar von Crysali ,

Danke, das verstehe ich. Ich werde mir das alles nochmal in Ruhe durchlesen/schauen!

Kommentar von dosenbiiir ,

Also erstmal, ein Objekt im Inspector stellt man nur auf "Static" wenn es sicht nicht bewegt. Das spart dann Performance und ermöglicht z.B. das ein Objekt ins NavMesh einberechnet wir ( falls dir das was sagt, wenn nicht macht das nichts).

Hast du jetzt geschafft was du machen wolltest? Falls nein, könnte ich Versuchen dir zu helfen z.b. über Skype

LG Dosenbiiir :)

Keine passende Antwort gefunden?

Fragen Sie die Community