Jump to content
Unity Insider Forum

Szenen wechseln und zurückkehren


Verdemis

Recommended Posts

Hallo Leute,

 

ich hätte da mal eine generelle Frage. Dabei handelt es sich jetzt kein konkretes Problem das ich habe, sondern einfach um einen Gedanken bei dem ich mich frage wie man so etwas am besten realisieren kann.

 

Folgendes Situation... sagen wir mal wir haben ein klassisches RPG. Wie gehen mal davon aus das die Kämpfe nicht auf der normalen Karte stattfinden, sondern in einem separaten Kampfbildschirm, wie bei so vielen rundenbasierten JRPGs.

 

Mein Gedanke dazu ist nun folgender... ich würde so vom Bauchgefühl her den Kampfbildschirm als separate Scene anlegen. Die Frage ist nun, wie realisiert man es am elegantesten das der Spieler nach dem Kampf zur vorherigen Szenen zurück kehrt und der Spielstand der vorherigen Szene exakt der selbe ist.

 

Ist es dazu wirklich nötig sämtliche Informationen der Szene zu speichern und zu laden, oder gibt es eine Möglichkeit die Szene aufrecht zu erhalten damit sie nicht verworfen wird? In dem oben genannten Beispiel wäre das sicher vergleichsweise einfach machbar die nötigen Infos zu speichern, aber wenn ich an Spiele denke in denen die Spielwelt viel weiter beeinflusst werden kann, kämen hier ja massiv viele Daten zusammen. Daher frage ich mich ob es hier ein einfacheres System gibt :)

 

Ich meine ich kann mir vorstellen das es genau so aufwendig ist wie ich mir das vorstelle... zumindest will ich gar nicht wissen wie die Savegames eines Skyrims aufgebaut sind wo der Stand einer gesamten Spielwelt irgendwie gespeichert werden muss.

 

LG

Verdemis

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bei deinem RPG könntest du das Ganze wie eine Art Fernsehstudio aufbauen.

Du hättest also eine Kamera die auf die Map schaut und eine oder mehrere Kamera(s) die auf ein Kapfsetup schauen. Kommt es jtzt zum Kampf, wird einfach die Kamera gewechselt und die Action beginnt. Alles was auf der Map passiert, wird eingefroren.

Ist der Kampf vorbei, wechselst du einfach wieder auf die Map und dort wird das Eingefrorene wieder aktiviert.

 

Sind aber dann zu viele Dinge in der Szene, musst du wohl doch alles in unterschiedliche Szenen aufteilen. Ja und dann musst du natürlich alle Daten der alten Szene zwischenspeichern, um beim zurückkehren wieder alles so zu haben/Instanzieren, wie es vorher war.

Dass da viele Daten anfallen ist klar. Wenn man aber nur veränderliche Daten speichert, ist das gar nicht mehr so schlimm. Ein NPC, z.B. hätte Infos über seine Position, seine Ausrichtung, evtl. auch seine Bewegung (wie schnell bewegt er sich gerade) und natürlich seine eigenen veränderlichen Werte, wie Lebenspunkte, Erfahrung, Power oder Rüstung.

Alles was nicht veränderlich ist, brauchst du auch nicht speichern. Deswegen sollte alles Unveränderliche einmal definiert sein und als Prefab abgespeichert sein. Beim Instanzieren des Prefabs werden dann nur die veränderlichen Werte dem Prefab übergeben und schon gehts weiter.

 

Die Daten speicherst du in Arrays, Listen oder Dictionarys. Entweder sind die Static oder aber sie hängen auf einem Objekt, welches nicht beim Szenenwechsel zerstört wird.

Ein Savegame muss dann natürlich die Infos der Arrays usw. auf die Platte speichern. Und beim Einladen werden die Infos des Savegames wieder zurück ins Array usw. geschrieben und dann wird instanziert.

Den Weg über die Platte sollte man nur beim Speichern und Laden machen, nicht beim Szenenwechsel.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 weeks later...

Static Vars kann man natürlich nutzen. Ich mache das bei gewissen Dingen auch.

Man muss sich halt immer bewusst sein, dass sie ihre Werte behalten, solang das Spiel läuft. Man muss die Vars also manuell zurück setzen, wenn z.B. nach einem GameOver neu gestartet wird.

Aber gerade um Werte über alle Szenen zu behalten, bieten sich static Vars an.

Link zu diesem Kommentar
Auf anderen Seiten teilen

In meiner Zeit mit der Engine A8, war sowas ganz normal. Man muss halt bei der Variablenbezeichnung gut aufpassen. Aber public Static ist mein Freund. Das Einzige was ich hier und da mal schade fand, dass diese im Inspector nicht mehr angezeigt werden. Aber das überlebe ich.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Static hat natürlich seine Existenzberechtigung. Schwierig wird es, wenn du auf static-Sachen unkontrolliert von überall her zugreifst und Werte veränderst. Dann kommst du bei der Fehlersuche schnell ins Schwimmen.

 

Jup, dem sollte man schon "Herr" sein. Unkontrolliert darf sowieso nichts sein. :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...