Skip to main content

Játékadatok betöltése és mentése a Corona SDK-ban (LUA / SQLite)

Peek a Boo Song | +More Nursery Rhymes & Kids Songs - CoCoMelon (Április 2025)

Peek a Boo Song | +More Nursery Rhymes & Kids Songs - CoCoMelon (Április 2025)
Anonim

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.

Ne feledje, hogy ez a technika meghaladhatja a felhasználói alapú beállítások tárolását. 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. Minden olyan adat, amelyet meg akarsz maradni, még akkor is, ha a felhasználó kilép a játékból és újraindítja.

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 adat_path = system.pathForFile ("data.db", system.DocumentsDirectory); db = sqlite3.open (adat_út);

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.

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) end

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

A beállítási funkció törli az asztalra mentett korábbi beállításokat, és beilleszti ú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.

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;

sorban db: nrows (sql) do érték = sor.érték; vég

visszatérési érték;

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

sorban db: nrows (sql) do érték = sor.érték; vég

visszatérési érték;

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.

A beállítások táblázata.

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:

function playSound (soundID) ha (getSetting ('hang')), majd audio.play (soundID) endend

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.