Kako naložiti in shraniti podatke o igri v SDK Corona

Kako uporabljati SQLite za shranjevanje podatkov in nastavitev iger

Ena stvar je skoraj vsaka aplikacija in igra skupna potreba po shranjevanju in pridobivanju podatkov. Celo najbolj preprosta igra lahko uporabi SQLite, če želite shraniti številko različice aplikacije, ki jo lahko uporabite za zagotovitev združljivosti med nadgradnjami ali preproste nastavitve, kot je vklop ali izklop zvoka igre.

Če nikoli niste storili veliko dela z bazami podatkov ali uporabili funkcije zbirke podatkov v SDK Corona , ne skrbite. To je pravzaprav relativno enostaven proces, zahvaljujoč moči LUA in baze podatkov SQLite, ki se uporablja v Corona SDK. Ta vadnica bo šel skozi postopek ustvarjanja tabele nastavitev in tako shranjevanja in pridobivanja informacij iz nje. Kako razviti iPad aplikacije.

Upoštevajte tudi, da lahko ta tehnika presega shranjevanje uporabniških nastavitev. Na primer, kaj, če imate igro, ki jo lahko predvajate z različnimi načini igre, kot sta "zgodba" in "arkadni" način. Ta tabela nastavitev se lahko uporablja za shranjevanje trenutnega načina. Ali katerikoli drug del podatkov, ki ga želite ohraniti, tudi če uporabnik zapusti igro in ga znova zažene.

Prvi korak: Inicializacija baze podatkov in ustvarjanje tabele z nastavitvami

Prva stvar, ki jo moramo storiti, je razglasiti SQLite knjižnico in povedati naši aplikaciji, kje najti datoteko zbirke podatkov. Najboljše mesto za postavitev te kode je na vrhu datoteke main.lua skupaj z drugimi zahtevajo izjave. Datoteka baze podatkov bo ustvarjena, če ne najdemo ničesar in jo bomo shranili v mapo Dokumenti, tako da jo bomo lahko prebrali in pisali.

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

Opazujte, kako spremenljivka "db" ni lokalizirana. To smo storili, da bi lahko zagotovili dostop do baze podatkov v celotnem projektu. Ustvarite lahko tudi določeno datoteko .lua za vse funkcije zbirke podatkov in shranite bazo podatkov v to datoteko.

Nato moramo ustvariti tabelo zbirke podatkov, ki bo shranila naše nastavitve:

lokalni sql = "CREATE TABLE IF NE POSTAVLJA nastavitve (ime, vrednost);"
db: exec (sql);

Ta izjava ustvari tabelo nastavitev. V redu je, da teče vsakič, ko aplikacija naloži, ker če že obstaja tabela, ta izjava ne bo storila ničesar. To izjavo lahko podate pod točko, kjer smo objavili bazo podatkov ali v funkciji, ki nastavi vašo aplikacijo. Glavna zahteva je (1), da te izjave izvršite vsakič, ko aplikacijo začnete, in (2) pred vsakim klicem naložite ali shranite nastavitve.

Drugi korak: Shranjevanje nastavitev v bazo podatkov

nastavitev funkcijeSetting (ime, vrednost)
sql = "IZBRI IZ nastavitev WHERE ime = '" .. ime .. "'";
db: exec (sql)

sql = "INSERT INTO nastavitve (ime, vrednost) VALUES ('' ..name .. ''," .. value .. ");";
db: exec (sql)
konec

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

Funkcija setSetting izbriše vse prejšnje nastavitve, shranjene v tabelo, in vstavi novo vrednost. Deloval bo tako z integriranimi kot z nizi, vendar za shranjevanje niza potrebujemo enojne kotacije okoli vrednosti, zato smo funkcijo setSettingString uporabili za to dodatno delo.

Tretji korak: Nalaganje nastavitev iz baze podatkov

funkcija getSetting (ime)

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

za vrstico v db: nrows (sql) storite
vrednost = vrstica.value;
konec

povratna vrednost;
konec

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

za vrstico v db: nrows (sql) storite
vrednost = vrstica.value;
konec

povratna vrednost;
konec

Kot zgoraj smo razčlenili funkcije v dve različici: eno za celice in eno za nizov. Glavni razlog, zakaj smo to naredili, je, da jih lahko inicializiramo s specifičnimi vrednostmi, če v bazi podatkov ne obstaja nastavitev. Funkcija getSetting bo vrnila -1, kar nam bo sporočilo, da nastavitev ni bila shranjena. GetSettingString bo vrnil prazen niz.

Funkcija getSettingString je popolnoma neobvezna. Edina razlika med to in normalno funkcijo getSetting je tisto, kar se vrne, če v bazi podatkov ni ničesar.

Četrti korak: z uporabo naše tabele nastavitev

Zdaj, ko smo težko opravili, lahko preprosto naložimo in shranimo nastavitve v lokalno bazo podatkov. Na primer, lahko zvok izklopimo z naslednjo izjavo:

setSetting ("zvok", false);

Nastavitev bi lahko uporabili v globalni funkciji za predvajanje zvoka:

funkcija playSound (soundID)
če (getSetting ("zvok") potem)
audio.play (soundID)
konec
konec

Če želite ponovno vključiti zvok, nastavimo nastavitev zvoka na true:

setSetting ("zvok", res);

Dober del teh funkcij je, da lahko shranite niz ali celo število v tabelo z nastavitvami in jih preprosto naložite. To vam omogoča, da storite vse, da shranite ime igralca, da shranite svojo visoko oceno.

Corona SDK: Kako narediti sloj grafike, premakniti grafiko in prenašati grafiko na sprednjo stran