Skip to main content

Kako učitati i spremiti podatke o igrama u Corona SDK (LUA / SQLite)

Carl Sandburg's 79th Birthday / No Time for Heartaches / Fire at Malibu (Travanj 2025)

Carl Sandburg's 79th Birthday / No Time for Heartaches / Fire at Malibu (Travanj 2025)
Anonim

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.

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. Bilo koji drugi podatak koji želite ostati uporan čak i ako korisnik izađe iz igre i ponovno ga pokrenu.

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", system.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:

lokalni 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.

Spremanje postavki u bazu podataka.

function setSetting (naziv, vrijednost) sql = "DELETE FROM settings WHERE name = '" .. ime .. "'"; db: exec (sql) sql = "INSERT INTO postavke (naziv, vrijednost) VRIJEDNOSTI ('" .. ime .. "", ".. vrijednost .."); "; db: izvršni (sql) kraj

funkcija setSettingString (name, value) set Postavljanje (ime, "" .. .. vrijednost .. "'");

Funkcija postavki briše sve prethodne postavke spremljene na stol i umetne nova 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.

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;

function getSettingString (name) local sql = "SELECT * FROM postavke WHERE name = '" .. ime .. "'"; lokalna vrijednost = "";

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

povratna vrijednost;

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.

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')) onda audio.play (soundID) endend

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.