Eén ding dat bijna elke app en game gemeen heeft, is de noodzaak om gegevens op te slaan en op te halen. Zelfs de meest eenvoudige game kan SQLite gebruiken om het versienummer van de app op te slaan, wat kan worden gebruikt om compatibiliteit te garanderen bij het uitvoeren van upgrades of eenvoudige instellingen zoals het in- of uitschakelen van het spelgeluid.
Als u nog nooit veel met databases hebt gewerkt of de databasefuncties in de Corona SDK hebt gebruikt, hoeft u zich geen zorgen te maken. Het is eigenlijk een relatief eenvoudig proces dankzij de kracht van LUA en de SQLite-database-engine die wordt gebruikt in de Corona SDK. Deze tutorial doorloopt het proces van het maken van een instellingentabel en zowel het opslaan als het ophalen van informatie.
Houd er rekening mee dat deze techniek verder kan gaan dan het opslaan van op gebruikers gebaseerde instellingen. Bijvoorbeeld, wat als u een spel hebt dat gespeeld kan worden met verschillende spelmodi, zoals de "verhaal" -modus en de "arcade" -modus. Deze instellingenstabel kan worden gebruikt om de huidige modus op te slaan. Alle andere gegevens die u blijvend wilt behouden, zelfs als de gebruiker het spel verlaat en het opnieuw start.
De database initialiseren en de tabel met instellingen maken.
Het eerste wat we moeten doen is de SQLite-bibliotheek declareren en onze app vertellen waar het databasebestand te vinden is. De beste plaats om deze code te plaatsen staat bovenaan het hoofd.lua-bestand samen met de andere vereiste verklaringen. Het databasebestand wordt aangemaakt als er geen wordt gevonden en we zullen het in de map Documenten opslaan zodat we het kunnen lezen en ernaar kunnen schrijven.
vereisen "sqlite3" local data_path = system.pathForFile ("data.db", system.DocumentsDirectory); db = sqlite3.open (data_path);
Merk op hoe de "db" variabele niet gelokaliseerd is. We hebben dit gedaan om ervoor te zorgen dat we gedurende ons hele project toegang hebben tot de database. U kunt ook een specifiek .lua-bestand maken voor alle databasefuncties en de database gelokaliseerd houden in dat bestand.
Vervolgens moeten we de databasetabel maken waarin onze instellingen worden opgeslagen:
lokale sql = "MAAK TAFEL ALS NIET BESTAAT instellingen (naam, waarde);" db: exec (sql);
Deze verklaring maakt onze tabel met instellingen. Het is prima om het elke keer dat de app wordt geladen uit te voeren, want als de tabel al bestaat, doet deze verklaring niets. U kunt deze verklaring precies weergeven waar we de database hebben gedeclareerd of in de functie die uw app instelt om te worden uitgevoerd. De belangrijkste vereiste is (1) om deze uitspraken uit te voeren elke keer dat de app wordt gestart en (2) om deze uit te voeren vóór alle oproepen om instellingen te laden of op te slaan.
Instellingen opslaan in de database.
function setSetting (naam, waarde) sql = "DELETE FROM settings WHERE name = '" .. name .. "'"; db: exec (sql) sql = "INSERT INTO instellingen (naam, waarde) VALUES ('" ..name .. "'," .. value .. ");"; db: exec (sql) einde
functie setSettingString (naam, waarde) setSetting (naam, "'" .. waarde .. "'"); einde
De instelfunctie verwijdert alle eerdere instellingen die in de tabel zijn opgeslagen en voegt onze nieuwe waarde in. Het werkt met zowel gehele getallen als strings, maar het opslaan van een string vereist enkele aanhalingstekens rond de waarde, dus we hebben de setSettingString-functie gebruikt om dat extra beetje werk voor ons te doen.
Instellingen laden vanuit de database.
functie getSetting (naam)
local sql = "SELECT * FROM settings WHERE name = '" .. name .. "'"; lokale waarde = -1;
voor rij in db: nrows (sql) do value = row.value; einde
retourwaarde; einde
function getSettingString (name) local sql = "SELECT * FROM settings WHERE name = '" .. name .. "'"; lokale waarde = '';
voor rij in db: nrows (sql) do value = row.value; einde
retourwaarde; einde
Zoals hierboven hebben we de functies in twee versies verdeeld: één voor gehele getallen en één voor strings. De belangrijkste reden dat we dit hebben gedaan, is dat we ze kunnen initialiseren met specifieke waarden als er geen instelling bestaat in de database. De functie getSetting retourneert een -1, wat ons laat weten dat de instelling niet is opgeslagen. De getSettingString retourneert een lege tekenreeks.
De functie getSettingString is volledig optioneel. Het enige verschil tussen het en de normale functie getSetting is wat wordt geretourneerd als er niets wordt gevonden in de database.
Met behulp van onze tabel met instellingen.
Nu we het harde werk hebben gedaan, kunnen we eenvoudig instellingen laden en opslaan in een gelokaliseerde database. We kunnen het geluid bijvoorbeeld dempen met de volgende verklaring:
setSetting ( 'sound', false);
En we zouden de instelling kunnen gebruiken in een globale functie voor het afspelen van geluiden:
function playSound (soundID) if (getSetting ('sound')) en audio.play (soundID) endend
Om het geluid weer in te schakelen, stellen we eenvoudig de geluidsinstelling in op true:
setSetting ( 'sound', true);
Het leuke van deze functies is dat je strings of gehele getallen kunt opslaan in de instellingenstabel en ze gemakkelijk kunt ophalen. Hiermee kunt u alles doen, van het opslaan van de naam van een speler tot het opslaan van de hoogste score.




