Skip to main content

Slik laster du inn og lagrer spilldata i Corona SDK (LUA / SQLite)

Hjelpe video : Hvordan laste ned YouTube Videoer! (April 2025)

Hjelpe video : Hvordan laste ned YouTube Videoer! (April 2025)
Anonim

En ting nesten hver app og spill har til felles er behovet for å lagre og hente data. Selv det enkleste spillet kan bruke SQLite til å lagre appversjonsnummeret, som kan brukes til å sikre kompatibilitet når du utfører oppgraderinger, eller enkle innstillinger som å slå spillets lyd på eller av.

Hvis du aldri har gjort mye arbeid med databaser eller brukt databasefunksjonene i Corona SDK, ikke bekymre deg. Det er faktisk en relativt enkel prosess takket være kraften til LUA og SQLite-databasemotoren som brukes i Corona SDK. Denne opplæringen vil gå gjennom prosessen med å opprette en innstillings-tabell og både lagre og hente informasjon fra den.

Husk at denne teknikken kan gå utover å lagre brukerbaserte innstillinger. For eksempel, hva om du har et spill som kan spilles ved hjelp av forskjellige spillmoduser som "story" -modus og "arkade" -modus. Denne innstillingsbordet kan brukes til å lagre gjeldende modus. Ethvert annet datatyper du vil forbli vedvarende, selv om brukeren slipper ut av spillet og gjenoppretter den.

Initialiserer databasen og lager innstillingsbordet.

Det første vi må gjøre er å erklære SQLite-biblioteket og fortelle vår app hvor du finner databasefilen. Det beste stedet å sette denne koden er rett på toppen av main.lua-filen sammen med den andre krever utsagn. Databasefilen blir opprettet hvis ingen er funnet, og vi lagrer den i Dokumenter-mappen slik at vi kan lese fra den og skrive til den.

krever "sqlite3" lokale data_path = system.pathForFile ("data.db", system.DocumentsDirectory); db = sqlite3.open (data_path);

Legg merke til hvordan "db" -variabelen ikke er lokalisert. Vi har gjort dette for å sikre at vi får tilgang til databasen gjennom hele vårt prosjekt. Du kan også opprette en bestemt .lua-fil for alle databasefunksjoner og beholde databasen lokalisert til den filen.

Deretter må vi opprette databasetabellen som lagrer innstillingene våre:

local sql = "CREATE TABLE IF IKKE EXISTS innstillinger (navn, verdi);" db: exec (sql);

Denne setningen oppretter vårt innstillingsbord. Det er greit å kjøre det hver gang appen lastes, fordi hvis tabellen allerede eksisterer, vil denne setningen ikke gjøre noe. Du kan sette denne uttalelsen rett under hvor vi har erklært databasen eller i funksjonen som setter appen din til å kjøre. Hovedkravet er å (1) utføre disse utsagnene hver gang appen lanseres, og (2) kjøre den før noen anrop for å laste inn eller lagre innstillinger.

Lagrer innstillinger i databasen.

funksjon setSetting (navn, verdi) sql = "SLETT FRA innstillinger WHERE navn = '" .. navn .. "'"; db: exec (sql) sql = "INSERT INTO innstillinger (navn, verdi) VALUES ('" ..name .. "'," .. value .. ");"; db: exec (sql) ende

funksjon setSettingString (navn, verdi) setSetting (navn, "'" .. verdi .. "'"); end

Innstillingsfunksjonen sletter eventuelle tidligere innstillinger lagret i tabellen og legger inn vår nye verdi. Det vil fungere med både heltall og strenger, men å lagre en streng krever enkelt anførselstegn rundt verdien, så vi har brukt setSettingString-funksjonen for å gjøre det ekstra arbeidet for oss.

Laster inn innstillinger fra databasen.

funksjon getSetting (navn)

local sql = "SELECT * FROM innstillinger WHERE name = '" .. name .. "'"; lokal verdi = -1;

for rad i db: nrows (sql) gjør verdi = row.value; slutt

returverdi, slutt

funksjon getSettingString (navn) local sql = "SELECT * FROM innstillinger WHERE name = '" .. name .. "'"; lokal verdi = '';

for rad i db: nrows (sql) gjør verdi = row.value; slutt

returverdi, slutt

Som ovenfor har vi brutt funksjonene i to versjoner: en for heltall og en for strenger. Hovedårsaken til at vi har gjort dette, er at vi kan initialisere dem med bestemte verdier hvis det ikke finnes noen innstilling i databasen. GetSetting-funksjonen returnerer en -1, som vil fortelle oss at innstillingen ikke er lagret. GetSettingString returnerer en tom streng.

GetSettingString-funksjonen er helt valgfri. Den eneste forskjellen mellom den og den vanlige getSetting-funksjonen er det som returneres dersom ingenting finnes i databasen.

Bruk vår innstillings tabell.

Nå som vi har det harde arbeidet, kan vi enkelt laste inn og lagre innstillinger til en lokal database. For eksempel kan vi dempe lyden med følgende setning:

setSetting ( 'lyd', false);

Og vi kunne bruke innstillingen i en global funksjon for å spille lyder:

funksjon playSound (soundID) hvis (getSetting ('sound')) deretter audio.play (soundID) endend

For å slå lyden på igjen, stiller vi bare lydinnstillingen til true:

setSetting ( 'lyd', true);

Den fine delen om disse funksjonene er at du kan lagre strenger eller heltall til innstillingsbordet og hente dem enkelt. Dette gjør at du kan gjøre alt fra å lagre en spillers navn for å lagre høy poengsum.