En sak som nästan varje app och spel har gemensamt är behovet av att lagra och hämta data. Även det enklaste spelet kan använda SQLite för att spara appversionsnumret, vilket kan användas för att säkerställa kompatibilitet vid uppgradering eller enkla inställningar som att slå spelets ljud på eller av.
Om du aldrig har gjort mycket arbete med databaser eller använt databasfunktionerna i Corona SDK, oroa dig inte. Det är faktiskt en relativt enkel process tack vare kraften i LUA och SQLite-databasmotorn som används i Corona SDK. Denna handledning kommer att gå igenom processen att skapa en inställningstabell och både lagra och hämta information från den.
Tänk på att den här tekniken kan gå utöver att lagra användarbaserade inställningar. Till exempel, om du har ett spel som kan spelas med olika spellägen som "story" -läge och "arkad" -läge. Denna inställningstabell kan användas för att lagra det aktuella läget. Någon annan data som du vill förbli uthållig även om användaren slutar ut ur spelet och startar om det.
Initialisera databasen och skapa inställningstabellen.
Det första vi behöver göra är att förklara SQLite-biblioteket och berätta för vår app var du hittar databasfilen. Det bästa stället att sätta den här koden är precis på toppen av main.lua-filen tillsammans med den andra kräver uttalanden. Databasfilen skapas om ingen hittas, och vi lagrar den i mappen Documents så att vi kan läsa av den och skriva till den.
kräver "sqlite3" local data_path = system.pathForFile ("data.db", system.DocumentsDirectory); db = sqlite3.open (data_path);
Lägg märke till hur "db" -variabeln inte är lokaliserad. Vi har gjort det för att se till att vi kan komma åt databasen genom hela vårt projekt. Du kan också skapa en specifik .lua-fil för alla databasfunktioner och behålla databasen lokaliserad till den filen.
Därefter måste vi skapa databattabellen som lagrar våra inställningar:
local sql = "CREATE TABLE IF INTE EXISTS inställningar (namn, värde);" db: exec (sql);
Detta uttalande skapar vår inställningstabell. Det är okej att köra det varje gång appen laddas, för om tabellen redan existerar, kommer detta uttalande inte att göra någonting. Du kan uttrycka detta uttalande precis under var vi har deklarerat databasen eller i den funktion som ställer in din app att köra. Huvudkravet är att (1) utföra dessa påståenden varje gång appen startas och (2) kör den innan några samtal för att ladda eller spara inställningar.
Spara inställningar till databasen.
funktion setSetting (namn, värde) sql = "DELETE FROM inställningar VAR namn = '" .. namn .. "'"; db: exec (sql) sql = "INSERT INTO inställningar (namn, värde) värden (" "..name ..", ".. värde .."); "; db: exec (sql) slutet
funktion setSettingString (namn, värde) setSetting (namn, "" ".. värde .." '"); slut
Inställningsfunktionen raderar tidigare inställningar som sparats i tabellen och sätter in vårt nya värde. Det kommer att fungera med både heltal och strängar, men att spara en sträng kräver enkla citat runt värdet, så vi har använt setSettingString-funktionen för att göra det extra lite arbete för oss.
Laddar inställningar från databasen.
funktion getSetting (namn)
local sql = "SELECT * FROM inställningar VAR namnet = '" .. namn .. "'"; lokalt värde = -1;
för rad i db: nrows (sql) gör värde = row.value; slutet
returvärde, slut
funktion getSettingString (namn) local sql = "VÄLJ * FRÅN inställningar VAR namnet = '" .. namn .. "'"; lokalt värde = '';
för rad i db: nrows (sql) gör värde = row.value; slutet
returvärde, slut
Som ovan har vi brutit funktionerna i två versioner: en för heltal och en för strängar. Huvudskälet till att vi har gjort det här är att vi kan initiera dem med specifika värden om ingen inställning finns i databasen. GetSetting-funktionen kommer att returnera en -1, vilket låter oss veta att inställningen inte har sparats. GetSettingString kommer att returnera en tom sträng.
Funktionen getSettingString är helt valfri. Den enda skillnaden mellan den och den vanliga getSetting-funktionen är det som returneras om inget finns i databasen.
Använd vår inställningstabell.
Nu när vi har gjort det hårda arbetet, kan vi enkelt ladda och spara inställningar till en lokal databas. Till exempel kan vi stänga av ljudet med följande uttalande:
setSetting (ljud ", false);
Och vi kan använda inställningen i en global funktion för att spela ljud:
funktion playSound (soundID) om (getSetting ('sound')) så slutar ljud.play (soundID)
För att sätta på ljudet återställer vi helt enkelt ljudinställningen till true:
setSetting ( 'ljud', true);
Den fina delen om dessa funktioner är att du kan spara strängar eller heltal till inställningsbordet och hämta dem enkelt. Detta gör att du kan göra allt från att spara en spelares namn för att spara sitt höga poäng.




