A játékadatok betöltése és mentése a Corona SDK-ban

Az SQLite használata a játékadatok és beállítások tárolására

Az egyik dolog, hogy szinte minden alkalmazásnak és játéknak közös az adat tárolása és visszakeresése. Még a legegyszerűbb játék is használhatja az SQLite-t, hogy mentse az alkalmazás verziószámát, amely a kompatibilitás biztosítása a frissítések végrehajtásakor, vagy olyan egyszerű beállítások, mint a játék hangjának be- és kikapcsolása.

Ha még soha nem sok munkát végzett az adatbázisokkal, vagy nem használta a Corona SDK adatbázis szolgáltatásait, ne aggódjon. Ez valójában egy viszonylag egyszerű eljárás az LUA és a Corona SDK által használt SQLite adatbázis-motornak köszönhetően. Ez a bemutató a beállítási tábla létrehozásának folyamatát és az adatok tárolását és lekérését végzi. Hogyan fejleszthetek iPad-alkalmazásokat?

Ne feledje, hogy ez a technika túlmegy a felhasználói alapú beállítások tárolásán. Például, ha van olyan játék, amely különböző játékmódokkal játszható le, például a "történet" és az "arcade" üzemmódban. Ez a beállítási táblázat használható az aktuális üzemmód tárolására. Vagy bármely más adat, amelyet meg akarsz maradni, még akkor is, ha a felhasználó kilép a játékból és újraindítja.

Első lépés: Az adatbázis inicializálása és a beállítási táblázat létrehozása

Az első dolog, amit meg kell tennünk, hogy kijelentjük az SQLite könyvtárat, és mondjuk meg az alkalmazást, hogy hol találja meg az adatbázis fájlt. A legjobb hely erre a kódra a fő.lua fájl tetején van, a másik pedig nyilatkozatokat igényel. Az adatbázisfájl akkor jön létre, ha senki nem található, és tároljuk a Dokumentumok mappában, így olvashatunk róla és írhatunk hozzá.

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

Figyeljük meg, hogy a "db" változó nincs lokalizálva. Ezt azért tettük meg, hogy megbizonyosodjunk arról, hogy az egész projektünkhöz hozzáférhetünk az adatbázisban. Létrehozhat egy speciális .lua fájlt az összes adatbázis-függvényhez, és megtarthatja az adott fájllal lokalizált adatbázist.

Ezután létre kell hoznunk az adatbázis táblát, amely tárolja a beállításainkat:

local sql = "CREATE TABLE IF NEM EXISTS beállítások (név, érték);"
dB: exec (SQL);

Ez az utasítás létrehozza a beállítási táblázatot. Minden alkalommal, amikor az alkalmazás betöltődik, rendben van, mert ha a táblázat már létezik, ez a nyilatkozat nem fog semmit tenni. Ezt a kijelentést közvetlenül elhelyezheti az adatbázis alatt, vagy az alkalmazást futtató függvényében. A fő követelmény (1), hogy végrehajtsa ezeket a kijelentéseket minden alkalommal, amikor az alkalmazást elindítja, és (2) végrehajtja, mielőtt bármilyen hívás betölteni vagy menteni beállításokat.

Második lépés: A beállítások mentése az adatbázisba

function setSetting (név, érték)
sql = "TÖRLÉS a beállításokból WHERE name = '" .. name .. "'";
db: exec (sql)

sql = "INSERT INTO beállítások (név, érték) VALUES ('" .. name .. "'," .. value .. ");";
db: exec (sql)
vég

function setSettingString (név, érték)
setSetting (név, " '" .. érték .. "'");
vég

A setSetting funkció törli az asztalra mentett korábbi beállításokat, és beilleszti az új értékünket. Ez együtt fog működni mind az egész számokkal, mind a karakterláncokkal, de a karaktersorozatot meg kell menteni az érték körül, ezért a setSettingString függvényt alkalmaztuk.

Harmadik lépés: Beállítások betöltése az adatbázisból

function getSetting (név)

helyi sql = "SELECT * FROM beállítások WHERE name = '" .. name .. "'";
helyi érték = -1;

a következő sorban: db: nrows (sql) do
értéke = row.value;
vég

visszatérési érték;
vég

function getSettingString (név)
helyi sql = "SELECT * FROM beállítások WHERE name = '" .. name .. "'";
helyi érték = '';

a következő sorban: db: nrows (sql) do
értéke = row.value;
vég

visszatérési érték;
vég

Mint fentebb elmondtuk, a funkciókat két verzióra bontottuk: egyet az egész számokra és az egyiket a karakterláncokra. A legfontosabb ok, hogy ezt elvégeztük, hogy egyedi értékekkel tudjuk inicializálni őket, ha nincs beállítás az adatbázisban. A getSetting funkció visszaad egy -1 értéket, amely közli velünk, hogy a beállítás nem lett mentve. A getSettingString visszaad egy üres karakterláncot.

A getSettingString funkció teljesen opcionális. Az egyetlen különbség a rendszer és a normál getSetting funkció között az az, amit visszakapunk, ha semmi sem található az adatbázisban.

Negyedik lépés: A beállítási táblázatunk használata

Most, hogy kemény munkánk van, egyszerűen betölthetjük és elmenthetjük a beállításokat egy helyi adatbázisba. Például elnémíthatja a hangot a következő kijelentéssel:

setSetting (a 'hang', false);

És a globális funkciót a hangok lejátszására használhatjuk:

függvény playSound (soundID)
ha (getSetting ('hang')) akkor
audio.play (hangID)
vég
vég

A hang visszaállításához egyszerűen állítsuk be a hang beállítást igaznak:

setSetting (a 'hang', true);

Ezeknek a funkcióknak a szép része az, hogy mentse a karakterláncokat vagy egész számokat a beállítások táblájához, és egyszerűen visszakeresheti azokat. Ez lehetővé teszi, hogy bármit megmentsünk a játékos nevének megőrzésével a magas pontszám megtakarításához.

Corona SDK: hogyan lehet a réteggrafika, a grafika mozgatása és a grafika elé állítása?