Kako učitati i spasiti podatke o igri u Corona SDK

Kako koristiti SQLite za čuvanje podataka o igri i podešavanja

Jedna stvar je skoro svaka aplikacija i igra zajednička je potreba za čuvanjem i povratnim podacima. Čak i najprostija igra može koristiti SQLite da sačuva broj verzije aplikacije, koja se može koristiti za obezbeđivanje kompatibilnosti prilikom obavljanja nadogradnje ili jednostavnih postavki kao što je uključivanje ili isključivanje zvuka igre.

Ako nikada niste radili mnogo posla sa bazama podataka ili koristili funkcije baze podataka u Corona SDK-u , ne brinite. To je zapravo relativno jasan proces zahvaljujući moći LUA i SQLite baze podataka koji se koristi u Corona SDK-u. Ovaj tutorijal će proći kroz proces kreiranja tabele postavki i čuvanja i prikupljanja informacija iz nje. Kako razvijati iPad aplikacije.

Takođe imajte na umu da ova tehnika može ići dalje od skladištenja korisničkih postavki. Na primer, šta ako imate igru ​​koja se može reprodukovati pomoću različitih režima igre, kao što su "priča" i "arkadni" režim. Ova tabela postavki se može koristiti za čuvanje trenutnog režima. Ili bilo koji drugi podatak koji želite da ostanete uporan čak i ako korisnik napusti igru ​​i ponovo se pokrene.

Prvi korak: Inicijalizacija baze podataka i kreiranje tabele postavki

Prva stvar koju treba da uradimo je da deklarišemo SQLite biblioteku i ispričamo našoj aplikaciji gde da pronađemo datoteku baze podataka. Najbolje mjesto za postavljanje ovog koda je na vrhu datoteke main.lua zajedno sa drugim zahtevima izjava. Datoteka baze podataka će se stvoriti ako nijedna nije pronađena, a mi ćemo je uskladištiti u fascikli "Dokumenti", tako da možemo čitati iz nje i pišati na njega.

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

Obratite pažnju na to kako varijabla "db" nije lokalizovana. Uradili smo ovo kako bismo osigurali pristup bazi podataka tokom našeg projekta. Takođe možete kreirati specifičnu .lua datoteku za sve funkcije baze podataka i zadržati bazu podataka lokalizovanu za tu datoteku.

Zatim, trebamo kreirati tablicu baze podataka koja će sačuvati naša podešavanja:

lokalni sql = "CREATE TABLE IF NE POSTAVLJA podešavanja (ime, vrijednost);"
db: exec (sql);

Ova izjava stvara našu tabelu podešavanja. U redu je da ga pokrenete svaki put kada aplikacija učita, jer ako tabela već postoji, ova izjava neće učiniti ništa. Ovu izjavu možete staviti tačno ispod toga gdje smo objavili bazu podataka ili u funkciji koja postavlja aplikaciju koja radi. Glavni zahtev je da (1) izvršava te izjave svaki put kada se aplikacija pokrene i (2) izvrši je pre bilo kojih poziva da učita ili sačuva podešavanja.

Drugi korak: čuvanje postavki u bazi podataka

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

sql = "INSERT INTO podešavanja (ime, vrijednost) VREDNOSTI ('' ..name .. ''," .. vrijednost .. ");";
db: exec (sql)
kraj

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

Funkcija setSetting briše sve prethodne postavke sačuvane u tabeli i ubacuje našu novu vrednost. Radit će se sa celim brojevima i nizovima, ali čuvanje niza zahtijeva pojedine citate oko vrijednosti, tako da smo koristili funkciju setSettingString da bismo učinili taj dodatni dio posla za nas.

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

funkcija getSetting (ime)

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

za red u db: nrows (sql) do
vrednost = red.value;
kraj

povratna vrednost;
kraj

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

za red u db: nrows (sql) do
vrednost = red.value;
kraj

povratna vrednost;
kraj

Kao što je gore navedeno, slomili smo funkcije u dve verzije: jedan za celine i jedan za stringove. Glavni razlog zašto smo to uradili je da ih inicijalizujemo sa određenim vrednostima ako u bazi podataka ne postoji opcija. Funkcija getSetting će vratiti -1, što će nam reći da postavka nije sačuvana. GetSettingString će vratiti prazan niz.

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

Četvrti korak: Koristite našu tabelu podešavanja

Sada kada imamo naporan rad, lako možemo učitati i sačuvati postavke u lokalizovanoj bazi podataka. Na primer, mogli smo da isključimo zvuk sa sledećom izjavom:

setSetting ('zvuk', false);

I mogli bismo da iskoristimo postavku u globalnoj funkciji za reprodukciju zvuka:

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

Da ponovo uključimo zvuk, postavljamo podešavanje zvuka na true:

setSetting ('zvuk', tačno);

Dobar deo o ovim funkcijama možete sačuvati stringove ili integere u tabelu podešavanja i lako ih preuzeti. Ovo vam omogućava da uradite bilo šta da sačuvate ime igrača da bi sačuvali svoj visoki rezultat.

Corona SDK: Kako da sloj grafike, pomerite grafiku i dovedete grafiku na napred