Jedna věc, kterou má téměř každá aplikace a hra společná, je potřeba ukládat a načítat data. Dokonce i nejjednodušší hra může využívat SQLite k uložení čísla verze aplikace, která může být použita k zajištění kompatibility při provádění upgradu nebo k jednoduchým nastavením, jako je zapnutí nebo vypnutí zvuku hry.
Pokud jste nikdy neudělali mnoho práce s databázemi ani nepoužívali funkce databáze v sadě Corona SDK, nebojte se. Je to skutečně poměrně přímočarý proces díky síle LUA a databázového stroje SQLite využívaného v sadě Corona SDK. Tento tutoriál bude procházet procesem vytváření tabulky nastavení a ukládání a získávání informací z ní.
Mějte na paměti, že tato technika může jít nad rámec uložení uživatelských nastavení. Například co když máte hru, kterou lze hrát v různých herních režimech, jako je režim "příběh" a režim "arkád". Tuto tabulku nastavení lze použít k uložení aktuálního režimu. Jakákoliv jiná data, která chcete zůstat trvalá i v případě, že uživatel ukončí hru a vrátí ji zpět.
Inicializace databáze a vytvoření tabulky nastavení.
První věc, kterou musíme udělat, je deklarovat knihovnu SQLite a informovat naši aplikaci, kde najdete databázový soubor. Nejlepším místem k umístění tohoto kódu je právě v horní části souboru main.lua spolu s dalšími požadovanými příkazy. Databázový soubor bude vytvořen, pokud se nenašel žádný, a my ho uložíme do složky Dokumenty, abychom si z něj mohli přečíst a napsat.
vyžadují "sqlite3" local data_path = system.pathForFile ("data.db", system.DocumentsDirectory); db = sqlite3.open (path_data);
Všimněte si, jak není proměnná "db" lokalizována. Udělali jsme to, abychom zajistili, že budeme mít přístup k databázi v rámci celého našeho projektu. Můžete také vytvořit konkrétní soubor .lua pro všechny funkce databáze a udržovat databázi lokalizovanou na daný soubor.
Dále musíme vytvořit databázovou tabulku, která uchová naše nastavení:
local sql = "CREATE TABLE Pokud neexistuje nastavení (název, hodnota);" db: exec (sql);
Toto prohlášení vytváří tabulku nastavení. Je to správné spustit při každém načtení aplikace, protože pokud tabulka již existuje, toto tvrzení nic neudělá. Toto prohlášení můžete umístit přímo pod to, kde jsme deklarovali databázi nebo funkci, která spouští vaši aplikaci. Hlavním požadavkem je (1) provést tyto příkazy vždy, když je aplikace spuštěna, a (2) ji provést před voláním načíst nebo uložit nastavení.
Uložení nastavení do databáze.
funkce setSetting (název, hodnota) sql = "DELETE z nastavení WHERE name = '" .. name .. "'"; db: exec (sql) sql = "INSERT INTO nastavení (název, hodnota) VALUES (" ..name .. "," ..value .. ");"; db: exec (sql) konec
funkce setSettingString (název, hodnota) setSetting (jméno, hodnota ".."); end
Funkce nastavení smaže všechna předchozí nastavení uložená v tabulce a vloží novou hodnotu. Bude fungovat jak s celými čísly, tak i řetězci, ale ukládání řetězce vyžaduje jednoduché uvozovky kolem hodnoty, takže jsme použili funkci setSettingString k tomu, že pro nás děláme extra práci.
Načítání nastavení z databáze.
funkce getSetting (název)
lokální sql = "SELECT * FROM nastavení WHERE name = '" .. jméno .. "'"; místní hodnota = -1;
pro řádek v db: nrows (sql) do value = row.value; konec
návratová hodnota;
funkce getSettingString (název) lokální sql = "SELECT * FROM nastavení WHERE name = '" .. jméno .. "'"; místní hodnota = '';
pro řádek v db: nrows (sql) do value = row.value; konec
návratová hodnota;
Stejně jako výše jsme rozdělila funkce na dvě verze: jedna pro celá čísla a druhá pro řetězce. Hlavním důvodem, proč jsme to udělali, je, abychom je mohli inicializovat pomocí určitých hodnot, pokud v databázi neexistuje žádné nastavení. Funkce getSetting vrátí číslo -1, které nám oznámí, že nastavení nebylo uloženo. Příkaz getSettingString vrátí prázdný řetězec.
Funkce getSettingString je zcela volitelná. Jediný rozdíl mezi ním a normální funkcí getSetting je to, co se vrátí, pokud se v databázi nenajde nic.
Použití naší tabulky nastavení.
Nyní, když jsme usilovně pracovali, můžeme snadno načíst a uložit nastavení do lokalizované databáze. Například bychom mohli vypnout zvuk pomocí následujícího příkazu:
setSetting ('zvuk', false);
A mohli bychom využít nastavení v globální funkci pro přehrávání zvuků:
funkce playSound (soundID), pokud (getSetting ('sound')) a pak končí audio.play (soundID)
Chcete-li zvuk znovu zapnout, jednoduše nastavíme nastavení zvuku na hodnotu true:
setSetting ('zvuk', true);
Příjemnou součástí těchto funkcí je, že můžete uložit řetězce nebo celá čísla do tabulky nastavení a snadno je načíst. To vám umožní dělat cokoliv, od uložení jména hráče na uložení svého vysokého skóre.




