Jump to content
Unity Insider Forum

Alles speichern?


Kojote

Recommended Posts

Grüße!

Mal eine Frage, bei meinem Spiel werden einigen Variablen hin und her geschupst und einige Bools aktiviert und deaktiviert. Ich möchte nun dem Spieler die Möglichkeit per Button geben, alles auf einen Ausgangspunkt zurück zu setzen. Die Möglichkeit bestünde, alle Variablenwerte einzeln zu speichern, jedoch wäre dies sehr mühsam und umständlich, habt ihr da eine Idee?

Des weiteren, ich arbeite in meinem Spiel mit Levels. Wie speichere ich es ab, wenn der Spieler ein Level geschafft hat und das nächste frei schaltet?

EDIT:

Also noch mal nachgedacht bräuchte ich zwei Speicherbereiche.

1. Ein Speicherbereich für Musiklautstärke und Co. zuzüglich die Level die geschafft wurden.

2. Ein Speicherbereich der in einem Level sämtliche Variablen und Booleans, Positionierungen und Co speichert, hier auch wieder geladen werden kann und den ich nach dem Levelende wieder löschen kann.

Hoffe ihr könnt mir da weiter helfen und schon mal vielen Dank für die Hilfe! :) 

Grüße von Kojote

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zu 1.: Hier bieten sich die PlayerPrefs am besten an. Die sind genau für solche Zwecke gedacht. Einfach mal nach "Unity PlayPrefs" googlen und dann mal in der Scripting Reference einlesen. 

Zu 2.: Ich denke mal je nach dem wieviele Variablen du da hast, bist du besser bedient, wenn du das alles in eine externe Datei speicherst. C# bringt da ganz gute Implementationen mit zum Speichern und Laden von z.B. XML-Dateien. XML (oder auch andere Markup Sprachen) eignen sich zum Speichern größerer Datenmengen für deine Anforderungen sehr gut. Wenn man es übertreiben will kann man natürlich auch auf SQL zurückgreifen aber das wäre glaube ich mit Kanonen auf Spatzen schießen :D

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Habe es mir gerade einmal angeschaut, ich müsste da ja jede Variable einzeln sichern. Gibt es eine Möglichkeit alles auf einmal zu speichern, so in der Art: "Speichere alle Variablen im jetzigen Zustand?"

Des weiteren, merke ich gerade ein kleines Problem. Ich habe mir mehrere Prefabs erstellt. Wenn ich nun in das Script der Prefabs in Awake das Speichern der Koordinaten und eine Methode zum Laden eintrage, hat jedes Objekt, welches durch das Prefab erstellt wurde, diese Methoden ja auch. Würden die sich nun nicht gegenseitig mit ihren Daten und Koordinaten überschreiben? Brauche ich nun für jedes Objekt ein eigenes Script?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das mit dem Level kannst mit ScriptableObjects machen.

 

Mir ist kein einfacher Weg bekannt alles zu speichern. Bei einer reinen Datenhaltungsklasse könnte man eine naive Serialisierung versuchen:

https://stackoverflow.com/questions/36852213/how-to-serialize-and-save-a-gameobject-in-unity

https://unity3d.com/learn/tutorials/topics/scripting/persistence-saving-and-loading-data

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier ist eine Möglichkeit die Daten einer Klasse in den PlayerPrefs abzulegen. Dafür müsstest du deine Leveldaten in einer Datenklasse zusammenfassen und diese könntest du dann über die Klasse "PlayerPrefsX2" in den PlayerPrefs gebündelt ablegen.
Beispiel:

 

using UnityEngine;
using System.Collections;
 
class Level
{
    public string Name;
    public int Index;
    public int Size;
    public int AchievablePoints;
    public int NumberOfEnemies;
    ...
}



Du kannst entweder die Reflectionklasse "PlayerPrefsX2" verwenden, oder du programmierst die Speicherung deiner Leveldaten in den PlayerPrefs von Hand aus. Letzteres macht etwas mehr Arbeit, aber wäre die Variante die ich bevorzugen würde.
http://wiki.unity3d.com/index.php/PlayerPrefsX2

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 13 Stunden schrieb Kojote:

Speichere alle Variablen im jetzigen Zustand?

Ich kann dir zu dieser Frage zwei Dinge sagen:

  1. Du bist nicht der erste, der das machen möchte.
  2. Es ist absolut keine gute Idee. Es gibt endlos viele Variablen in einem fertigen Spiel, die du nicht permanent speichern möchtest :)
Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...