Momentan arbeite ich an dem Datenspar- (und Lade-) Teil meines Spiels, benutze LibGDX's JSON Ausgabedatei Schreibklassen. Ich habe überall in Google versucht, eine Lösung zu finden, und bin nah dran, aber keine Zigarre. Bisher habe ich bei dem Versuch, eine Array<Object>
in einer Datei zu speichern gelungen, aber wenn ich versuche, die Daten aus der Datei zu lesen/laden, erhalte ich die folgende Ausnahme:LibGDX SerializationException verursacht durch Feld nicht gefunden
com.badlogic.gdx.utils.SerializationException: Error reading file: cards.json
at com.badlogic.gdx.utils.Json.fromJson(Json.java:705)
at com.towersvault.unbalanced.util.save.SaveHandler.loadCards(SaveHandler.java:91)
at com.towersvault.unbalanced.util.save.SaveHandler.load(SaveHandler.java:51)
at com.towersvault.unbalanced.UnbalancedMain.create(UnbalancedMain.java:28)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:147)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:124)
Caused by: com.badlogic.gdx.utils.SerializationException: Field not found: cards (com.badlogic.gdx.utils.Array)
Serialization trace:
{}.cards
at com.badlogic.gdx.utils.Json.readFields(Json.java:790)
at com.badlogic.gdx.utils.Json.readValue(Json.java:919)
at com.badlogic.gdx.utils.Json.fromJson(Json.java:703)
... 5 more
Meine JSON-Datei wie folgt aussieht:
{
"cards": [
{
"card": "ID_3",
"temper": "LAZY"
},
{
"card": "ID_2",
"temper": "LAZY"
},
{
"card": "ID_1",
"temper": "LAZY"
},
{
"card": "ID_1",
"temper": "LAZY"
}
]
}
Mein Quellcode für das Ladeverfahren sieht wie folgt aus:
Array<CardData> loadedCards = json.fromJson(Array.class, CardData.class, Gdx.files.local("cards.json");
die CardData
Klasse hat zwei Variablen, nämlich private Card card;
(typi es aus, die Variable ist eine enum, die ich für die Instanz jeder Karte), und private CardTemper temper;
(auch eine enum, die das gleiche wie die andere). Es wird Instanzen der Karten geben müssen, weil sie alle nicht gleich sind, wenn ich die restlichen Funktionen weiter ausführe.
Ich weiß nicht genau, wo ich falsch liege, und ich denke, dass es hauptsächlich auf meine mangelnde Erfahrung im Umgang mit dem Speichern und Laden von Spielinformationen zurückzuführen ist.
Wenn jemand mir vielleicht helfen könnte, würde es sehr geschätzt werden.
Danke, Clifford