Unity string?
Ich arbeite gerade an einem Spiel.
Um die verschiedenen welten zu speichern und zu laden speichere ich die welt in einer .json datei.
Ich habe das so aufgebaut das die daten des spieler so gespeichert werden P[Geld;X-Koordinate;Y-Koordinate;Level].
Die map ist auf 2 ebenen aufgebaut eine ebene blockiert den spieler und die andere nicht die habe ich jeweils so gespiechert
G[Blockart(X-Koordinate;Y-Koordinate)Blockart(X-Koordinate;Y-Koordinate)...]
Und die blockierene eben genau so:
B[Blockart(X-Koordinate;Y-Koordinate)Blockart(X-Koordinate;Y-Koordinate)...]
Das speichert funktioniert relativ simpel über eine foreach schleife, jedoch beim auslesen bekomme ich den ganzen text in einem string. Gibt es eine möglichkeit den string relativ einfach aufzusplitten?
1 Antwort
![](https://images.gutefrage.net/media/user/regex9/1455660989427_nmmslarge__0_13_270_270_615d5a3bc6888f4c1486ce2b4d9d8f60.png?v=1455660989000)
Seitens Unity gibt es die JsonUtility-Klasse, die ein einfaches De-/Serialisieren von Objekten erlaubt. Lies hier.
Noch flexibler ist Newtonsoft.JSON. Für Unity gibt es für diese Bibliothek ein angepasstes Package. Wie du mit der Bibliothek arbeiten kannst, verrät die Dokumentation.
![](https://images.gutefrage.net/media/user/regex9/1455660989427_nmmslarge__0_13_270_270_615d5a3bc6888f4c1486ce2b4d9d8f60.png?v=1455660989000)
Felder/Properties, die nicht serialisiert werden sollen, kann man mit einem Attribut kennzeichnen, zumal standardmäßig nur sichtbare Felder/Properties serialisiert werden.
Beispiel:
class Person
{
[System.NonSerialized]
public int Age { get; set; }
public string Name { get; set; }
}
Bei Newtonsoft hast du noch mehr Attribute, um Elemente zu ignorieren oder anders zu mappen (z.B. ein JSON-Element X auf ein anders benanntes C#-Property Y).
Vielen Dank für die Antwort, jedoch habe ich diese Funktion vorher bereits ausprobiert, jedoch speichert man damit einige dinge die ich nicht benötige oder man deutlich kürzen kann, so wird aus einer 100kb Datei plötzlich eine 1MB Datei.
Jedoch habe ich jetzt bereits eine Lösung gefunden. Ich spalten den string einfach bei bestimmten stellen auf und kann mir so alles herausziehen wie ich es benötige