Kako učitati i spremiti podatke o igrama u Corona SDK-u

Kako koristiti SQLite za spremanje podataka o igrama i postavki

Jedna stvar koju je gotovo svaka aplikacija i igra zajedničko jest potreba za pohranjivanjem i dohvaćanjem podataka. Čak i najjednostavnija igra može iskoristiti SQLite za spremanje broja verzije aplikacije, koja se može koristiti za osiguranje kompatibilnosti prilikom nadogradnje ili jednostavnih postavki poput uključivanja ili isključivanja zvuka igre.

Ako nikad niste radili puno s bazama podataka ili koristili značajke baze podataka u SDK- u Corone , ne brinite. To je zapravo relativno jednostavan proces zahvaljujući snazi ​​LUA i SQLite baze podataka korištenog u Corona SDK-u. Ovaj vodič proći će kroz izradu tablice postavki i pohranjivanje i dohvaćanje informacija s njega. Kako razviti aplikacije za iPad.

Imajte na umu da ova tehnika može ići izvan spremanja korisničkih postavki. Na primjer, što ako imate igru ​​koja se može igrati pomoću različitih načina igre, kao što su "priča" način i "arkada" način. Ova tablica postavki može se koristiti za spremanje trenutnog načina rada. Ili bilo koji drugi podatak koji želite ostati uporan čak i ako korisnik izađe iz igre i ponovno ga pokrenu.

Prvi korak: Inicijalizacija baze podataka i kreiranje tablice postavki

Prva stvar koju trebamo učiniti je izjaviti SQLite knjižnicu i reći našoj aplikaciji gdje pronaći datoteku baze podataka. Najbolje mjesto za postavljanje ovog koda je pravo na vrhu datoteke main.lua zajedno s ostalim zahtjevima. Datoteka baze podataka će se stvoriti ako se nitko ne pronađe i spremit ćemo ga u mapu Dokumenti kako bismo je mogli čitati i pisati na njemu.

zahtijevaju "sqlite3"
lokalni data_path = system.pathForFile ("data.db", sustav.DocumentsDirectory);
db = sqlite3.open (data_path);

Primjetite kako varijabla "db" nije lokalizirana. To smo učinili da bismo osigurali pristup bazi podataka tijekom cijelog našeg projekta. Također možete stvoriti određenu .lua datoteku za sve funkcije baze podataka i zadržati bazu podataka lokaliziranu na tu datoteku.

Zatim moramo stvoriti tablicu baze podataka koja će pohraniti naše postavke:

local sql = "CREATE TABLE IF NOT EXISTS postavke (naziv, vrijednost);"
db: exec (SQL);

Ta izjava stvara našu tablicu postavki. U redu je pokrenuti svaki put kad se aplikacija učita jer ako tablica već postoji, ova izjava neće učiniti ništa. Tu izjavu možete postaviti tamo gdje smo proglasili bazu podataka ili u funkciji koja postavlja vašu aplikaciju da se pokrene. Glavni je zahtjev (1) izvršiti te izjave svaki put kada se aplikacija pokrene i (2) izvršiti prije poziva za učitavanje ili spremanje postavki.

Drugi korak: Spremanje postavki u bazu podataka

funkcija setSetting (naziv, vrijednost)
sql = "DELETE FROM settings WHERE name = '" .. ime .. "'";
db: izvršni (sql)

sql = "INSERT INTO postavke (naziv, vrijednost) VRIJEDNOSTI ('" ..name .. "", ".. vrijednost .."); ";
db: izvršni (sql)
kraj

funkcija setSettingString (naziv, vrijednost)
setSetting (ime, " '" .. vrijednost .. "'");
kraj

Funkcija setSetting briše sve prethodne postavke spremljene u tablicu i unosi novu vrijednost. Radit će s oba broja i nizova, ali spremanje niza zahtijeva pojedinačne navodnike oko vrijednosti pa smo pomoću funkcije setSettingString učinili taj dodatni posao za nas.

Treći korak: Učitavanje postavki iz baze podataka

funkcija getSetting (naziv)

lokalni sql = "SELECT * FROM settings WHERE name = '" .. ime .. "'";
lokalna vrijednost = -1;

za redak u db: nrows (sql) do
value = row.value;
kraj

povratna vrijednost;
kraj

funkcija getSettingString (ime)
lokalni sql = "SELECT * FROM settings WHERE name = '" .. ime .. "'";
lokalna vrijednost = "";

za redak u db: nrows (sql) do
value = row.value;
kraj

povratna vrijednost;
kraj

Kao što je gore navedeno, razvrstali smo funkcije u dvije verzije: jedan za cijele brojeve i jedan za žice. Glavni razlog zbog kojeg smo to učinili jest da ih možemo inicijalizirati s određenim vrijednostima ako u bazi podataka nema postavki. Funkcija getSetting će vratiti -1, što će nam obavijestiti da postavka nije spremljena. GetSettingString će vratiti prazan niz.

Funkcija getSettingString je potpuno opcionalna. Jedina razlika između nje i normalne funkcije getSetting je ono što se vraća ako ništa nije pronađeno u bazi podataka.

Četvrti korak: Upotreba tablice s postavkama

Sada kada imamo naporan posao, lako se možemo učitati i spremiti postavke na lokaliziranu bazu podataka. Na primjer, možemo isključiti zvuk sa sljedećom tvrdnjom:

setSetting ( 'zvuk', false);

A postavku možemo upotrijebiti u globalnoj funkciji za reprodukciju zvukova:

funkcija playSound (soundID)
ako (getSetting ('zvuk')) tada
audio.play (soundID)
kraj
kraj

Da biste ponovno uključili zvuk, jednostavno postavimo postavku zvuka na istinito:

setSetting ( 'zvuk', true);

Dobar dio o ovim funkcijama možete spremiti nizove ili cijele brojeve na tablicu postavki i lako ih preuzeti. To vam omogućuje da učinite bilo što iz spremanja imena igrača da biste spremili njihov visok rezultat.

Corona SDK: kako slojiti grafiku, premjestiti grafiku i donijeti grafiku na prednjoj strani