Bradley Geschrieben 22. Oktober 2018 Melden Share Geschrieben 22. Oktober 2018 Mir sind einige Dinge bei Unity noch weiter Unklar, vieleicht könnte mir da einer etwas erhellung bringen. 1) Wie kann ich dich Daten zwischen 2 Scence austauschen ? Als Beispiel: Im Hauptmenu defeniere ich die größe der Spielwelt und noch ein paar andere Parameter. Im eigentlichen Spiel will ich jetzt diese Daten nutzen, wie komme ich da jetzt dran ? Unter normalen Code umständen würde ich eine Klasse definieren die ich als Parameter der Startklasse der neuen Scence übergebe. Wie funktioniert so was in Unity ? 2) Täusche ich mich, oder gibt es keine möglichkeit im UnityEditor einer Methode mehr als einen Parameter mitzugeben ? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 22. Oktober 2018 Melden Share Geschrieben 22. Oktober 2018 1) Du hast mehrere Möglichkeiten: Statische Variablen ScriptableObjects als Datencontainer Objekt(e) mit DontDestroyOnLoad Das ist auch in absteigender Reihenfolge - nimm also am liebsten erstmal eine statische Variable oder zwei. ScriptableObjects sind etwas komplizierter anzuwenden, erlauben dafür aber Injection. DontDestroyOnLoad wird oft als allererstes empfohlen, ist aber keine besonders schöne Sache, und dazu noch unnötig, wenn keine UnityEngine-Komponenten überleben müssen. 2) Wenn du von UnityEngine.Events.UnityEvent redest, dann ja. In der Regel stellt sich bei näherer Betrachtung heraus, dass es für jeden Fall, in dem man mehr Parameter übergeben will, eine architektonisch elegantere Lösung gibt. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
devandart Geschrieben 30. Oktober 2018 Melden Share Geschrieben 30. Oktober 2018 Ich weiß jetzt nicht, wo man es in @Saschas Liste einordnen könnte, vielleicht direkt nach den statischen Variablen. Aber es gibt auch noch die Möglichkeit, eine zusätzliche Scene beim Start zu laden, welche persistent ist und in welche Objekte reinkommen, welche immer existieren müssen. Auch hier gibt es Stolperfallen, ich würde also auch eher die statischen Variablen empfehlen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Bradley Geschrieben 22. Januar 2019 Autor Melden Share Geschrieben 22. Januar 2019 Wie sieht es mit dem Datenaustausch inerhalb einer Scence zwischen verschiedenen Scripten aus. Bin über ein Tutorial über "[SerializeField]" gestolpert und es tut eigentlich das was ich brauche. Es kommt aber wohl dadurch zu ein paar - von mir - ungewollten Effekten. Andere sachen die ich gesehen habe ware, sagen wir mal sperriger in dem ich das Script via gameObject.Find("NameOfTheGameObjectTarget" )... Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 22. Januar 2019 Melden Share Geschrieben 22. Januar 2019 vor 28 Minuten schrieb Bradley: Es kommt aber wohl dadurch zu ein paar - von mir - ungewollten Effekten. Die da wären? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Lightstorm Geschrieben 22. Januar 2019 Melden Share Geschrieben 22. Januar 2019 Am 22.10.2018 um 10:52 schrieb Bradley: 2) Täusche ich mich, oder gibt es keine möglichkeit im UnityEditor einer Methode mehr als einen Parameter mitzugeben ? Du kannst als Parameter ein ScriptableObject übergeben das dann wiederum beliebig viele Variablen enthalten kann, auf die in der Methode zugegriffen werden kann. Dafür muss die Methode natürlich angepasst sein. Ich kam auf die Idee aber sie gefällt mir nicht besonders, da ich dann in jeder Komponente wo ich so zugreifen will eine spezielle Methode anlegen muss die ScriptableObjects akzeptiert.. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Bradley Geschrieben 22. Januar 2019 Autor Melden Share Geschrieben 22. Januar 2019 vor 12 Minuten schrieb Sascha: Die da wären? Zumindest während des Debbugens im Editor werden die Variablen nicht zurück gesetzt. Als beispiel starte ich mit 50 Energie. Jede Bewegung zieh mit 1 Energie ab. NAch dem testen bin ich bei 45. Jetzt ändere ich irgendwa am Code oder sonst etwas und teste neu. Das Spiel startet jetzt nicht mit 50 sondern 45. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 22. Januar 2019 Melden Share Geschrieben 22. Januar 2019 Das ist bei ScriptableObjects so, aber nicht bei MonoBehaviours in der Szene. Wenn du globale Variablen als ScriptableObjects im Hipple-Stil haben willst, dann ist es sinnvoll, ein bisschen rumzuhantieren, damit man vernünftig mit den Dingern arbeiten kann. Ein Beispiel wäre das hier. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Lightstorm Geschrieben 23. Januar 2019 Melden Share Geschrieben 23. Januar 2019 @Bradley Kann ich nur empfehlen. Den "Hipple-Stil" und die Architektur Vorlage auf Gitlab von Sascha. Schau es dir mal an! Hier ist es auch nochmal beschrieben: https://unity3d.com/de/how-to/architect-with-scriptable-objects @Sascha Ich hatte übrigens den ValueReferenceDrawer übersehen und fand es schon bisschen unschön das dass im Editor so wucherte mit aufklappbaren Variablen. Habe das dann gestern übernommen und war nochmal begeistert. 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.