Tag 13 – Einstellungen

veröffentlicht am: 13. Dezember 2012

day13Wir haben zwar schon ein schönes Optionsmenü (mit mehr oder weniger sinnvollen Optionen), aber die Einstellungen werden noch nicht gespeichert.

Dafür gibt es in libgdx die Klasse Preferences. Wir geben der Klasse TestGame als Instanzvariable ein Objekt hiervon, damit wir von überall auf diese Instanz zugreifen können.
Im LoadingScreen erstellen wir dann das Objekt:

// load options
game.preferences=Gdx.app.getPreferences("settings");

„settings“ ist hier der Name der Preferences, die wir laden wollen. Wir können somit verschiedene Preferences für die Einstellungen und für Highscores machen.

Die Preferences abzufragen geht einfach über den Key (z.B. „volume“) zudem können wir beim Abfragen noch einen Standartwert mitgeben, falls diese Einstellung noch nicht gesetzt ist.

volume=game.preferences.getInteger("volume",100);

Auf fast dem selben Weg können wir dann in unserem OptionScreen die Einstellungen verändern.

game.preferences.putInteger("volume", volume);

Allerdings werden diese erst wirklich gespeichert, wenn wir den folgenden Befehl aufrufen:

game.preferences.flush();

Wir können natürlich nicht nur Einstellungen speichern, sondern auch ganz normale Dateien.
Unter android kann man Daten lokal (im Telefonspeicher) oder extern (auf der SD-Karte) speichern. (für extern braucht man wieder eine Permission).
Auf dem Desktop ist der lokale Speicher relativ zu dem Arbeitsverzeichnis des Spiels und der externe Speicher relativ zum Home-Verzeichnis des Benutzers.

Zuerst kann man überprüfen, ob überhaupt Zugriff auf die Speicher besteht:

boolean externalAvailable = Gdx.files.isExternalStorageAvailable();
boolean localAvailable = Gdx.files.isLocalStorageAvailable();

Nun brauchen wir ein FileHandle, um auf die Datei zugreifen zu können.

FileHandle externalFile = Gdx.files.external("myfile.txt");
FileHandle localFile = Gdx.files.local("myfile.txt");

Dateien zu lesen und zu schreiben ist in libgdx noch einfacher als in normalem Java.

String contents = file.readString(); // read
file.writeString(contents, false); // overwrite
file.writeString(new_stuff, true); // append

Mehr zu Dateiverwaltung findest du in der Dokumentation.

Hab momentan noch keine Ahnung, was ich morgen machen werde. Muss leider nebenbei für die Schule noch Dinge erledigen, deswegen arbeite ich noch an Kollisionen.

geposted in libgdx

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.