Nahezu jede App und jedes Spiel hat die Notwendigkeit, Daten zu speichern und abzurufen. Selbst das einfachste Spiel kann SQLite verwenden, um die Versionsnummer der App zu speichern. Diese kann verwendet werden, um Kompatibilität bei Upgrades oder einfache Einstellungen wie das Ein- und Ausschalten des Sounds zu gewährleisten.
Wenn Sie noch nie viel mit Datenbanken gearbeitet haben oder die Datenbankfunktionen des Corona SDK verwendet haben, machen Sie sich keine Sorgen. Es ist eigentlich ein relativ einfacher Prozess, dank der Leistungsfähigkeit von LUA und der SQLite-Datenbank-Engine, die im Corona SDK verwendet wird. In diesem Lernprogramm wird das Erstellen einer Einstellungstabelle sowie das Speichern und Abrufen von Informationen beschrieben.
Beachten Sie, dass diese Technik über das Speichern benutzerbasierter Einstellungen hinausgehen kann. Was ist beispielsweise, wenn Sie ein Spiel haben, das mit verschiedenen Spielmodi wie "Story" -Modus und "Arcade" -Modus gespielt werden kann. Diese Einstellungstabelle kann zum Speichern des aktuellen Modus verwendet werden. Alle anderen Daten, die Sie beibehalten möchten, auch wenn der Benutzer das Spiel beendet und neu startet.
Initialisieren der Datenbank und Erstellen der Einstellungstabelle.
Als Erstes müssen Sie die SQLite-Bibliothek deklarieren und unserer App mitteilen, wo die Datenbankdatei zu finden ist. Der beste Platz, um diesen Code einzufügen, befindet sich oben in der main.lua-Datei zusammen mit den anderen Anweisungen. Die Datenbankdatei wird erstellt, wenn keine gefunden wird. Wir speichern sie im Ordner "Dokumente", damit wir sie lesen und in sie schreiben können.
erfordern "sqlite3" local data_path = system.pathForFile ("data.db", system.DocumentsDirectory); db = sqlite3.open (data_path);
Beachten Sie, dass die Variable "db" nicht lokalisiert ist. Wir haben dies getan, um sicherzustellen, dass wir während des gesamten Projekts auf die Datenbank zugreifen können. Sie können auch eine spezifische .lua-Datei für alle Datenbankfunktionen erstellen und die Datenbank für diese Datei lokalisieren.
Als Nächstes müssen wir die Datenbanktabelle erstellen, in der unsere Einstellungen gespeichert werden:
local sql = "CREATE TABLE WENN NOT EXISTS-Einstellungen (Name, Wert);" db: exec (sql);
Diese Anweisung erstellt unsere Einstellungstabelle. Es ist in Ordnung, es jedes Mal auszuführen, wenn die App geladen wird. Wenn die Tabelle bereits vorhanden ist, führt diese Anweisung nichts aus. Sie können diese Anweisung direkt unter dem Ort angeben, an dem wir die Datenbank deklariert haben, oder in der Funktion, mit der Ihre App ausgeführt wird. Die Hauptanforderung ist (1), diese Anweisungen bei jedem Start der App auszuführen und (2) sie auszuführen, bevor Aufrufe zum Laden oder Speichern von Einstellungen aufgerufen werden.
Einstellungen in der Datenbank speichern.
function setSetting (name, value) sql = "DELETE FROM-Einstellungen WHERE name = '" .. name .. "" "; db: exec (sql) sql = "INSERT INTO-Einstellungen (Name, Wert) VALUES ('" ..name .. "'," .. value .. ");"; db: exec (sql) end
Funktion setSettingString (Name, Wert) SetSetting (Name, "'" .. Wert .. "" "); Ende
Die Einstellungsfunktion löscht alle zuvor in der Tabelle gespeicherten Einstellungen und fügt unseren neuen Wert ein. Es funktioniert sowohl mit Ganzzahlen als auch mit Strings, aber das Speichern eines Strings erfordert einfache Anführungszeichen um den Wert. Daher haben wir die setSettingString-Funktion verwendet, um diese zusätzliche Arbeit für uns zu erledigen.
Einstellungen aus der Datenbank laden.
Funktion getSetting (Name)
local sql = "SELECT * FROM-Einstellungen WHERE name = '" .. name .. "" "; lokaler Wert = -1;
für Zeile in db: nRows (sql) do value = row.value; Ende
Rückgabewert; Ende
function getSettingString (name) local sql = "SELECT * FROM-Einstellungen WHERE name = '" .. name .. "" "; lokaler Wert = '';
für Zeile in db: nRows (sql) do value = row.value; Ende
Rückgabewert; Ende
Wie oben haben wir die Funktionen in zwei Versionen unterteilt: eine für Ganzzahlen und eine für Strings. Der Hauptgrund dafür ist, dass wir sie mit bestimmten Werten initialisieren können, wenn keine Einstellung in der Datenbank vorhanden ist. Die getSetting-Funktion gibt eine -1 zurück, die uns mitteilt, dass die Einstellung nicht gespeichert wurde. GetSettingString gibt eine leere Zeichenfolge zurück.
Die getSettingString-Funktion ist vollständig optional. Der einzige Unterschied zu der normalen getSetting-Funktion besteht darin, was zurückgegeben wird, wenn nichts in der Datenbank gefunden wird.
Verwenden Sie unsere Einstellungstabelle.
Nun, da wir die harte Arbeit erledigt haben, können wir die Einstellungen einfach laden und in einer lokalisierten Datenbank speichern. Zum Beispiel könnten wir den Ton mit der folgenden Anweisung stummschalten:
setSetting ('sound', false);
Und wir könnten die Einstellung in einer globalen Funktion zum Abspielen von Sounds verwenden:
Funktion playSound (soundID) if (getSetting ('sound')) dann audio.play (soundID) enden
Um den Sound wieder einzuschalten, setzen wir die Soundeinstellung einfach auf true:
setSetting ('sound', true);
Das Schöne an diesen Funktionen ist, dass Sie Strings oder Ganzzahlen in der Einstellungstabelle speichern und diese problemlos abrufen können. Auf diese Weise können Sie alles vom Speichern eines Spielernamens bis zum Speichern des Highscores tun.




