Kuidas laadida ja salvestada Game Data Corona SDK-s

Kuidas kasutada SQLite mängude andmete ja seadete salvestamiseks

Üks asi, mida peaaegu igal rakendusel ja mängul on ühine, on andmete salvestamine ja allalaadimine. Isegi kõige lihtsam mäng võib kasutada rakendust SQLite, et salvestada versiooninumber, mida saab kasutada uuenduste läbiviimisel ühilduvuse tagamiseks, või lihtsaid seadeid, nagu mängude heli sisse- või väljalülitamine.

Kui te pole kunagi teinud palju tööd andmebaasidega ega kasutanud Corona SDK andmebaasi funktsioone, ärge muretsege. See on tegelikult suhteliselt lihtne protsess tänu LUA ja Corona SDK-s kasutatava SQLite andmebaasi mootori võimele. See juhendaja läbib seadete tabeli loomise protsessi ning teabe salvestamist ja hankimist. IPadi rakenduste arendamine.

Samuti pidage meeles, et see meetod võib ulatuda kaugemale kasutajapõhiste seadistuste salvestamisest. Näiteks kui teil on mäng, mida saab mängida erinevate mängurežiimide, näiteks "lugu" režiimi ja "arcade" režiimi abil. Seda seadete tabelit saab kasutada praeguse režiimi salvestamiseks. Või mis tahes muud andmed, mida soovite püsida ka siis, kui kasutaja loobub mängust ja taaskäivitab selle.

Esimene samm: andmebaasi initsialiseerimine ja seadete tabeli loomine

Esimene asi, mida me peame tegema, on deklareerida SQLite raamatukogu ja rääkida meie rakendusele, kust andmebaasi fail leida. Parim koht selle koodi paigaldamiseks on peamine .lua-faili ülaosas, teisega on vaja avaldusi. Andmebaasifail luuakse, kui seda ei leita, ja me salvestame selle kausta Dokumendid, et saaksime sellest lugeda ja sellele kirjutada.

nõuda "sqlite3"
local data_path = system.pathForFile ("data.db", system.DocumentsDirectory);
db = sqlite3.open (data_path);

Pange tähele, kuidas muutuja "db" pole lokaliseeritud. Oleme seda teinud, et tagada kogu meie projekti kaudu juurdepääs andmebaasile. Samuti saate luua spetsiifilise .lua-faili kõikide andmebaasi funktsioonide jaoks ja hoida andmebaas selle faili lokaliseeritud.

Järgnevalt peame looma andmebaasi tabeli, mis salvestab meie seaded:

local sql = "CREATE TABLE, KUI EI OLEME sätted (nimi, väärtus);"
db: exec (sql);

See avaldus loob meie seadete tabeli. Iga kord, kui rakendus koormatakse, on see kõik korras. Kui see tabel juba olemas, siis see avaldus ei tee midagi. Saate panna selle avalduse otse selle koha, kus oleme avaldanud andmebaasi või funktsiooni, mis käivitab teie rakenduse. Peamine nõue on (1) nende avalduste täitmine iga kord, kui rakendus käivitatakse ja (2) täidab seda enne, kui laaditakse üles või salvestatakse seadeid.

Teine samm: sätted salvestatakse andmebaasi

funktsioon setSetting (nimi, väärtus)
sql = "Eemalda seadetest WHERE name = '" .. nimi .. ""';
db: exec (sql)

sql = "INSERT INTO seaded (nimi, väärtus) VALUES ('' ..nimi .. '', '.. väärtus ..'); ';
db: exec (sql)
lõpp

funktsioon setSettingString (nimi, väärtus)
setSetting (nimi, "" ".. väärtus ..." ");
lõpp

SetSetting funktsioon kustutab kõik tabelisse salvestatud eelmised sätted ja lisab uue väärtuse. See töötab nii täisarvu kui stringidega, kuid stringi salvestamine nõuab väärtuse ümber ühe hinnapakkumisi, seega kasutasime setSettingString funktsiooni, et teha seda meie jaoks veel natuke tööd.

Kolmas samm: laadib seadeid andmebaasist

function getSetting (nimi)

kohalik sql = "SELECT * FROM seadistustest WHERE name = '" .. nimi ..' '';
kohalik väärtus = -1;

rea db: nrows (sql) tegema
value = row.value;
lõpp

tagastatav väärtus;
lõpp

funktsioon getSettingString (nimi)
kohalik sql = "SELECT * FROM seadistustest WHERE name = '" .. nimi ..' '';
kohalik väärtus = '';

rea db: nrows (sql) tegema
value = row.value;
lõpp

tagastatav väärtus;
lõpp

Nagu ülalpool, rikkusime funktsioone kahte versiooni: üks täisarvude ja üks stringide jaoks. Peamine põhjus, miks me seda tegime, on selline, et me saaksime neid initsialiseerida konkreetsete väärtustega, kui andmebaasis puuduvad seaded. GetSetting funktsioon tagastab -1, mis annab meile teada, et seade pole salvestatud. GetSettingString tagastab tühja stringi.

GetSettingString funktsioon on täiesti vabatahtlik. Ainus erinevus selle ja tavalise getSettimise funktsiooni vahel on see, mis tagastatakse, kui andmebaasis midagi ei leita.

Samm neli: meie seadete tabeli kasutamine

Nüüd, kui meil on raske teha, saame hõlpsasti koondada ja salvestada sätted lokaliseeritud andmebaasi. Näiteks võime heli vaigistada järgmise avaldusega:

setSetting ("heli", vale);

Ja me võiksime helide esitamiseks kasutada globaalses funktsioonis seadistusi:

funktsioon playSound (soundID)
kui (getSetting ('sound')) siis
audio.play (soundID)
lõpp
lõpp

Helitugevuse sisselülitamiseks seadisime lihtsalt heli seadistuse true:

setSetting ('sound', true);

Nende funktsioonide kena osa on see, et saate seadete tabelisse salvestada stringe või täisarvu ja neid hõlpsalt laadida. See võimaldab teil midagi teha, salvestades mängija nime, et salvestada oma kõrge skoori.

Corona SDK: kuidas kihtgraafika, graafika teisaldamine ja graafika esiotsimine