DrSkillix Geschrieben 5. August 2019 Melden Share Geschrieben 5. August 2019 Hallo Leute! ich habe eben erst begonnen mit der Spieleprogrammierung und wollte euch um einen Rat fragen. Ich entwickle ein kleines 2D Adventure Spiel indem der Charakter unter anderem einen Computer benutzen soll. Ich habe ein Desktop gezeichnet und alles funktioniert schön und gut. Allerdings habe ich für den Wechsel der aktuellen Scene zum Desktop mit einem Szenenwechsel gearbeitet. Problem nun ist, dass wenn ich vom Desktop zurückwechsle, meine Szene samt dem Introdialog etc von Vorne beginnt was ja logisch ist. Gibt es da eine besondere Methodik oder würdet ihr das Ganze von Grundauf anders gestalten? Irgendwie muss sowas ja gehen, wenn es Minispiele im Spiel selber gibt, läuft das ja schon über eigene Szenen oder? Vielen Dank im Voraus ! LG Theo Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 5. August 2019 Melden Share Geschrieben 5. August 2019 Das ist so eine Sache, wo ich selber noch nie "die" Lösung gesehen habe, und ich gehe davon aus, dass es die auch nicht gibt. Gibt also für alles Vor- und Nachteile. Was recht üblich ist, ist deine Computerszene additiv zu laden. Das bedeutet, dass die vorherige Szene nicht entladen wird, sondern bleibt. Dann kannst du ihre Inhalte manuell deaktivieren, irgendwann die additive Szene entladen und die andere wieder aktivieren. Das Deaktivieren und Reaktivieren der ersten Szene ist hier das problematische. Ich habe gerade noch einmal nachgeschaut... es scheint nach wie vor keinen Weg zu geben, Szenen zu deaktivieren. Du müsstest also sowas machen wie die gesamte Szene einem GameObject unterzuordnen und dann dieses zu deaktivieren. Alternativ kannst du einfach die zweite Szene lassen und stattdessen z.B. ein Prefab instanziieren. Dabei hast du natürlich dasselbe Problem, dass der Rest der Szene irgendwie auf Pause gesetzt werden muss. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
devandart Geschrieben 7. August 2019 Melden Share Geschrieben 7. August 2019 Müsste sowas nicht funktionieren? private void ActivateScene(string sceneName, bool activate) { var scene = UnityEngine.SceneManagement.SceneManager.GetSceneByName(sceneName); foreach(var go in scene.GetRootGameObjects()) { go.SetActive(activate); } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 7. August 2019 Melden Share Geschrieben 7. August 2019 Hm, das ist in der Tat eine gute Idee! Muss ich mir merken. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tyroonis Geschrieben 7. August 2019 Melden Share Geschrieben 7. August 2019 Aber müsste das nicht auch mit additiven Laden der Scene gehen? Also Scenemanger.LoadScene ("Deine Computerscene", LoadSceneMode.Additiv) Glecihzeitig pausierst du deine hauptscene wenn du willst. Und zurück geht es indem du die Computerscene schließt oder mit SceneManager.UnloadScene ("Deine ComputerScene"); Ich hatte das zumindest mal so gemacht. Bei mir ist man auch an ein Terminal gegangen. Da das nicht viel berchnung erfordert, hatte ein Pausieren bei mir gereicht. NACHTRAG: habe gerade gesehen das @Sascha dasauch schon aufgegriffen hatte. 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.