Én ting, næsten alle apps og spil har til fælles, er behovet for at gemme og hente data. Selv det mest enkle spil kan udnytte SQLite til at gemme appversionsnummeret, som kan bruges til at sikre kompatibilitet, når der udføres opgraderinger eller enkle indstillinger som f.eks. At slå lyden til eller fra.
Hvis du aldrig har gjort meget arbejde med databaser eller brugt databasefunktionerne i Corona SDK, skal du ikke bekymre dig. Det er faktisk en forholdsvis simpel proces takket være kraften i LUA og SQLite-databasemotoren, der anvendes i Corona SDK. Denne vejledning vil gå gennem processen med at oprette en indstillings tabel og både gemme og hente information fra den.
Husk, at denne teknik kan gå ud over at gemme brugerbaserede indstillinger. For eksempel, hvad hvis du har et spil, der kan afspilles ved hjælp af forskellige spiltilstande som f.eks. "Story" -tilstand og "arkade" -tilstand. Denne indstillingstabel kan bruges til at gemme den aktuelle tilstand. Ethvert andet stykke data, som du vil forblive vedholdende, selvom brugeren forlader spillet og genstarter det.
Initialisering af databasen og oprettelse af indstillingstabellen.
Det første, vi skal gøre, er at erklære SQLite-biblioteket og fortælle vores app, hvor du finder databasefilen. Det bedste sted at sætte denne kode er lige øverst på main.lua-filen sammen med den anden kræver udsagn. Databasefilen oprettes, hvis der ikke findes nogen, og vi gemmer den i mappen Dokumenter, så vi kan læse fra den og skrive til den.
kræver "sqlite3" local data_path = system.pathForFile ("data.db", system.DocumentsDirectory); db = sqlite3.open (data_path);
Bemærk hvordan "db" -variablen ikke er lokaliseret. Vi har gjort dette for at sikre, at vi har adgang til databasen gennem hele vores projekt. Du kan også oprette en bestemt .lua-fil for alle databasefunktioner og holde databasen lokaliseret til den pågældende fil.
Dernæst skal vi oprette database tabellen, der gemmer vores indstillinger:
local sql = "CREATE TABLE IF IKKE EXISTS indstillinger (navn, værdi);" db: exec (sql);
Denne erklæring skaber vores indstillingsbord. Det er okay at køre det hver gang appen laster, fordi hvis bordet allerede eksisterer, vil denne erklæring ikke gøre noget. Du kan sætte denne erklæring direkte under, hvor vi har erklæret databasen eller i den funktion, der opretter din app til at køre. Hovedkravet er at (1) udføre disse udsagn hver gang appen er lanceret, og (2) udføre den før eventuelle opkald for at indlæse eller gemme indstillinger.
Gemmer indstillinger til databasen.
funktion setSætning (navn, værdi) sql = "DELETE fra indstillinger WHERE navn = '" .. navn .. "'"; db: exec (sql) sql = "INSERT INTO indstillinger (navn, værdi) VÆRDIER ('" ..name .. "'," .. værdi .. ");"; db: exec (sql) ende
funktion setSettingString (navn, værdi) setSetting (navn, "'" .. værdi .. "'"); slut
Indstillingsfunktionen sletter eventuelle tidligere indstillinger gemt i tabellen og indsætter vores nye værdi. Det vil fungere med både heltal og strenge, men at gemme en streng kræver enkelt citater rundt om værdien, så vi har brugt funktionen setSettingString til at gøre den ekstra smule arbejde for os.
Indlæser indstillinger fra databasen.
funktion getSetting (navn)
local sql = "SELECT * FROM indstillinger WHERE name = '" .. name .. "'"; lokal værdi = -1;
for række i db: nrows (sql) gør værdi = row.value; ende
returværdi; slut
funktion getSettingString (navn) local sql = "SELECT * FRA indstillinger WHERE name = '" .. name .. "'"; lokal værdi = '';
for række i db: nrows (sql) gør værdi = row.value; ende
returværdi; slut
Som ovenfor har vi brudt funktionerne i to versioner: en for heltal og en for strenge. Hovedårsagen til dette er, at vi kan initialisere dem med bestemte værdier, hvis der ikke findes nogen indstilling i databasen. GetSetting-funktionen returnerer et -1, hvilket vil fortælle os, at indstillingen ikke er blevet gemt. GetSettingString vil returnere en tom streng.
Funktionen getSettingString er helt valgfri. Den eneste forskel mellem den og den normale getSetting-funktion er, hvad der returneres, hvis der ikke findes noget i databasen.
Brug vores indstillinger tabel.
Nu hvor vi har gjort det hårde arbejde, kan vi nemt indlæse og gemme indstillinger til en lokal database. For eksempel kunne vi dempe lyden med følgende sætning:
setSetting ( 'lyd', falsk);
Og vi kunne bruge indstillingen i en global funktion til at spille lyde:
funktion playSound (soundID) hvis (getSetting ('sound')) end lyd.play (soundID) slutter
For at slå lyden til igen, indstiller vi simpelthen lydindstillingen til true:
setSetting ( 'lyd', true);
Den gode del om disse funktioner er, at du kan gemme strenge eller heltal til indstillingsbordet og hente dem nemt. Dette giver dig mulighed for at gøre alt for at gemme en spillers navn for at gemme deres høj score.