Jak načíst a ukládat data hry do sady Corona SDK

Jak používat službu SQLite pro ukládání dat o hrách a nastavení

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í. Jak vyvinout iPad aplikace.

Mějte také 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. Nebo jakákoli jiná data, která chcete zůstat vytrvalá, i když uživatel ukončí hru a znovu ji obnoví.

Krok první: 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.

požadovat "sqlite3"
lokální data_path = system.pathForFile ("data.db", system.DocumentsDirectory);
db = sqlite3.open (datová cesta);

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

Druhý krok: Uložení nastavení do databáze

funkce setSetting (název, hodnota)
sql = "DELETE z nastavení WHERE name = '" .. jméno .. "'";
db: exec (sql)

sql = "INSERT INTO nastavení (název, hodnota) HODNOTY (" .. jméno .. "," .. hodnota .. ");";
db: exec (sql)
konec

funkce setSettingString (název, hodnota)
setSetting (jméno, hodnota ".." .. ")";
konec

Funkce setSetting smaže všechna předchozí nastavení uložená do tabulky 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.

Krok třetí: 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 řádku v db: nrows (sql) do
value = row.value;
konec

návratová hodnota;
konec

funkce getSettingString (název)
lokální sql = "SELECT * FROM nastavení WHERE name = '" .. jméno .. "'";
místní hodnota = '';

pro řádku v db: nrows (sql) do
value = row.value;
konec

návratová hodnota;
konec

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.

Krok čtyři: 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 (zvuk ID)
pokud (getSetting ('sound'))
audio.play (soundID)
konec
konec

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.

Corona SDK: Jak na grafiku vrstev, přesunout grafiku a přenést grafiku na přední stranu