ich ein Array von Mission.class
speichern möchten, die Variablen wie folgt:Libgdx laden/speichern Array in Json
public class Mission {
public MissionEnum missionEnum;
public int progress;
public Mission(MissionEnum missionEnum, int progress) {
this.missionEnum = missionEnum;
this.progress = progress;
}
und auch Missionen in anderen Java-Klasse sparen:
public void saveMissions() {
Json json = new Json();
json.setOutputType(JsonWriter.OutputType.json);
json.addClassTag("Mission", Mission.class);
FileHandle missionFile = Gdx.files.local("missions_array.json");
missionFile.writeString(json.prettyPrint(missions), false);
}
und Last-Missionen :
public void loadMissions() {
if (Gdx.files.local("missions_array.json").exists()) {
try {
FileHandle file = Gdx.files.local("missions_array.json");
Json json = new Json();
json.addClassTag("Mission", Mission.class);
missions = json.fromJson(Array.class, Mission.class, file);
for (Mission mission : missions) {
Gdx.app.log(TAG, "Mission loaded: " + mission.missionEnum);
}
Gdx.app.log(TAG, "Load missions successful");
} catch (Exception e) {
Gdx.app.error(TAG, "Unable to read Missions: " + e.getMessage());
}
}
}
ich habe json wie folgt aus:
[
{
"class": "Mission",
"missionEnum": "BUY_POWERUP"
},
{
"class": "Mission",
"missionEnum": "DISTANCE_ONE_RUN_2"
},
{
"class": "Mission",
"missionEnum": "BANANA_TOTAL_2",
"progress": 35
}
]
aber wenn loadMissions()
läuft Ich habe das "Load missions successful"
Protokoll gezeigt, aber "Mission loaded..."
sind nicht ohne Fehlerprotokoll angezeigt. Missionen erschienen nicht richtig geladen. Ich weiß nicht, was schief gelaufen ist, weil ein anderes Array auf die gleiche Weise erfolgreich geladen wurde.
Ist es möglich, dass das fehlende Fortschrittsfeld in einigen Missionen das Problem verursacht? Welche Fehlerprotokolle werden angezeigt? Vielleicht fügt man einen Konstruktor mit nur einer Mission Enum hinzu und setzt den Fortschritt auf Null. – albodelu
Ich habe wieder zu den Voreinstellungen zurückgekehrt. nvm – lamma