Ako načítať a ukladať dáta o hrách v súprave Corona SDK

Ako používať program SQLite na ukladanie údajov o hrách a nastaveniach

Jedna vec takmer každá aplikácia a hra má spoločné je potreba ukladať a získavať dáta. Dokonca aj najjednoduchšia hra môže využívať program SQLite na uloženie čísla verzie aplikácie, ktorá sa môže použiť na zaistenie kompatibility pri vykonávaní inovácií alebo jednoduché nastavenia, ako je zapnutie alebo vypnutie zvuku hry.

Ak ste nikdy neurobili veľa práce s databázami alebo nepoužívali databázové funkcie v súprave Corona SDK , nebojte sa. Je to vlastne relatívne jednoduchý proces vďaka sile LUA a databázového motora SQLite, ktorý sa používa v Corona SDK. Táto príručka bude prechádzať procesom vytvárania tabuľky nastavení a tak ukladaním a získavaním informácií z nej. Ako vytvoriť iPad aplikácie.

Majte tiež na pamäti, že táto technika môže ísť nad rámec ukladania užívateľských nastavení. Napríklad, ak máte hru, ktorú je možné hrať pomocou rôznych herných režimov, ako je režim "príbeh" a režim "arkád". Táto tabuľka nastavení sa môže použiť na uloženie aktuálneho režimu. Alebo akýkoľvek iný údaj, ktorý chcete zostať perzistentný aj vtedy, keď používateľ ukončí hru a obnoví ju.

Krok 1: Inicializácia databázy a vytvorenie tabuľky nastavení

Prvá vec, ktorú musíme urobiť, je deklarovať SQLite knižnicu a informovať našu aplikáciu, kde nájsť databázový súbor. Najlepšie miesto na vloženie tohto kódu je priamo v hornej časti súboru main.lua spolu s ostatnými požiadavkami. Databázový súbor sa vytvorí, ak sa nenájde, a uložíme ho do priečinka Dokumenty, aby sme si ho mohli prečítať a napísať.

vyžadujú "sqlite3"
lokálna dátová cesta = system.pathForFile ("data.db", system.DocumentsDirectory);
db = sqlite3.open (Data_Path);

Všimnite si, ako nie je lokalizovaná premenná "db". Urobili sme to, aby sme sa uistili, že môžeme získať prístup k databáze v rámci nášho projektu. Môžete tiež vytvoriť špecifický súbor .lua pre všetky databázové funkcie a udržiavať lokalizovanú databázu v danom súbore.

Ďalej je potrebné vytvoriť databázovú tabuľku, ktorá uchová naše nastavenia:

local sql = "CREATE TABLE, AK NIE JE VYSTAVENÉ nastavenia (meno, hodnota);"
db: exec (SQL);

Toto vyhlásenie vytvára našu tabuľku nastavení. Je to správne spustiť pri každom načítaní aplikácie, pretože ak tabuľka už existuje, toto vyhlásenie nebude robiť nič. Toto vyhlásenie môžete umiestniť priamo tam, kde sme vyhlásili databázu alebo funkciu, ktorá spúšťa vašu aplikáciu. Hlavnou požiadavkou je (1) vykonať tieto vyhlásenia pri každom spustení aplikácie a (2) ju vykonať pred akýmkoľvek volaním na načítanie alebo uloženie nastavení.

Druhý krok: Uloženie nastavení do databázy

nastavenie funkcie (názov, hodnota)
sql = "DELETE z nastavení WHERE name = '" .. name .. "'";
db: exec (sql)

sql = "INSERT INTO nastavenia (názov, hodnota) HODNOTY (" ..name .. "," .. hodnota .. ");";
db: exec (sql)
koniec

funkcia setSettingString (názov, hodnota)
setSetting (meno, " '" .. hodnotu .. "'");
koniec

Funkcia setSetting vymaže všetky predchádzajúce nastavenia uložené v tabuľke a vloží našu novú hodnotu. Bude fungovať s obidvoma číslami a reťazcami, ale uloženie reťazca vyžaduje jednoduché úvodzovky okolo hodnoty, takže sme použili funkciu setSettingString, aby sme urobili tento extra námahy.

Tretí krok: Načítavanie nastavení z databázy

funkcia getSetting (meno)

lokálne sql = "SELECT * FROM nastavenia WHERE name = '" .. name .. "'";
miestna hodnota = -1;

pre riadok v db: nrows (sql) do
hodnota = row.value;
koniec

návratová hodnota;
koniec

funkcia getSettingString (meno)
lokálne sql = "SELECT * FROM nastavenia WHERE name = '" .. name .. "'";
miestna hodnota = '';

pre riadok v db: nrows (sql) do
hodnota = row.value;
koniec

návratová hodnota;
koniec

Ako sme už uviedli, funkcie sme rozdelili na dve verzie: jedno pre celé čísla a jedno pre reťazce. Hlavným dôvodom, prečo sme to urobili, je, že ich môžeme inicializovať pomocou špecifických hodnôt, ak v databáze neexistuje žiadne nastavenie. Funkcia getSetting vráti hodnotu -1, ktorá nám oznámi, že nastavenie nebolo uložené. GetSettingString vráti prázdny reťazec.

Funkcia getSettingString je úplne voliteľná. Jediný rozdiel medzi ním a normálnou funkciou getSetting je to, čo sa vráti, ak sa v databáze nenájde nič.

Krok štyri: Použite našu tabuľku nastavení

Teraz, keď sme vykonali náročnú prácu, môžeme ľahko načítať a uložiť nastavenia do lokalizovanej databázy. Napríklad by sme mohli vypnúť zvuk s nasledujúcim vyhlásením:

setSetting ( 'zvuk', false);

A mohli by sme využiť nastavenie v globálnej funkcii pre prehrávanie zvukov:

funkcia playSound (zvuk ID)
ak (getSetting ('zvuk')) potom
audio.play (zvuk ID)
koniec
koniec

Ak chcete zvuk opäť zapnúť, jednoducho nastavíme nastavenie zvuku na hodnotu true:

setSetting ( 'zvuk', true);

Príjemnou súčasťou týchto funkcií je, že môžete uložiť reťazce alebo celé čísla do tabuľky nastavení a ľahko ich načítať. To vám umožní urobiť čokoľvek, ak si uložíte meno hráča a ušetríte tak jeho vysoké skóre.

Corona SDK: Ako vrchnú grafiku, presunúť grafiku a priniesť grafiku do frontu