Skip to main content

Ako načítať a ukladať dáta o hrách v súbore Corona SDK (LUA / SQLite)

Anonim

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.

Majte 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. Akékoľvek iné údaje, ktoré chcete zostať pretrvávajúce aj v prípade, že používateľ ukončí hru a obnoví ju.

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" local data_path = system.pathForFile ("data.db", system.DocumentsDirectory); db = sqlite3.open (cesta_priem);

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 (názov, 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í.

Uloženie nastavení do databázy.

funkcia setSetting (názov, hodnota) sql = "DELETE z nastavení WHERE name = '" .. name .. "'"; db: exec (sql) sql = "INSERT INTO nastavenia (názov, hodnota) VALUES (" ..name .. "," .. hodnota .. ");"; db: exec (sql) koniec

funkcia setSettingString (meno, hodnota) setSetting (meno, hodnota ".."

Funkcia nastavenia vymaže všetky predchádzajúce nastavenia uložené do tabuľky 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.

Nahrávanie 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 value = row.value; koniec

návratová hodnota;

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

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

návratová hodnota;

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

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

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.