Pelitietojen lataaminen ja tallentaminen Corona SDK: ssa

Miten SQLite tallentaa pelitiedot ja asetukset

Yksi asia, jolla jokainen sovellus ja peli on yhteistä, on tarve tallentaa ja hakea tietoja. Jopa kaikkein yksinkertaisin peli voi käyttää SQLiteä tallentamaan sovelluksen versionumero, jota voidaan käyttää yhteensopivuuteen päivitysten suorittamisen aikana tai yksinkertaisissa asetuksissa, kuten pelin äänen kytkemisestä päälle tai pois.

Jos et ole koskaan tehnyt paljon työtä tietokantojen kanssa tai käyttänyt Corona SDK: n tietokantaominaisuuksia, älä huoli. Se on todellakin suhteellisen yksinkertainen prosessi, joka on LUA: n ja Coronan SDK: n käyttämän SQLite-tietokantalokin ansiota. Tämä opetusohjelma käy läpi asetustietokannan luomista ja tallentaa ja hakea tietoja siitä. Kuinka kehittää iPad-sovelluksia.

Muista myös, että tämä tekniikka voi ylittää käyttäjäperusteisten asetusten tallentamisen. Esimerkiksi, jos sinulla on peli, jota voidaan pelata erilaisilla pelitiloilla, kuten "tarina" -tila ja "arcade" -tila. Tätä asetustaulukkoa voidaan käyttää nykyisen tilan tallentamiseen. Tai mitä tahansa muuta tietoa, jonka haluat pysyä hitaana, vaikka käyttäjä poistuu pelistä ja käynnistää sen uudelleen.

Vaihe yksi: Tietokannan alustaminen ja asetusten taulukon luominen

Ensimmäinen asia, mitä meidän on tehtävä, on julistaa SQLite-kirjasto ja kertoa sovellukselle, mistä löytää tietokantatiedosto. Paras paikka tämän koodin asettamiseksi on oikeassa ylälaidassa tärkeimmän .lua-tiedoston ja muiden vaatimusten kanssa. Tietokanta tiedosto luodaan, jos mikään ei löydy, ja tallennamme sen Documents-kansioon, jotta voimme lukea siitä ja kirjoittaa siihen.

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

Huomaa, kuinka "db" -muuttujaa ei ole lokalisoitu. Olemme tehneet tämän varmistaaksemme, että voimme käyttää tietokantaa koko projektimme ajan. Voit myös luoda erityisen .lua-tiedoston kaikille tietokantatoiminnoille ja pitää tietokannan paikallisena kyseiselle tiedostolle.

Seuraavaksi meidän on luotava tietokanta taulukko, joka tallentaa asetukset:

local sql = "LUONTAA TAULUKKO, JOS EI OLE EXISTS asetuksia (nimi, arvo);"
db: exec (SQL);

Tämä lausuma luo asetukset-taulukon. On hyvä suorittaa se aina, kun sovellus ladataan, koska jos taulukko on jo olemassa, tämä lausunto ei tee mitään. Voit laittaa tämän lausunnon suoraan sen alle, missä olemme ilmoittautuneet tietokannasta tai toiminnossa, joka asettaa sovelluksesi toimimaan. Tärkein vaatimus on (1) suorittaa nämä lausunnot joka kerta kun sovellus käynnistetään ja (2) suorittaa sen ennen puheluja asetusten lataamiseen tai tallentamiseen.

Vaihe kaksi: Asetusten tallentaminen tietokantaan

function setSetting (nimi, arvo)
sql = "POISTA asetukset WHERE name = '" .. name .. "'";
db: exec (sql)

sql = "INSERT INTO asetukset (nimi, arvo) ARVOT ('" ..name .. "'," .. arvo .. ");";
db: exec (sql)
pää

funktio setSettingString (nimi, arvo)
setSetting (nimi, " '" .. arvo .. "'");
pää

SetSetting-toiminnolla poistetaan taulukkoon tallennetut aiemmat asetukset ja lisätään uusi arvo. Se toimii sekä kokonaislukujen että merkkijonojen kanssa, mutta merkkijonon tallentaminen edellyttää yksittäisiä lainauksia arvon ympärillä, joten olemme käyttäneet setSettingString-funktiota tehdäksemme sen ylimääräisen työn.

Kolmas vaihe: Asetusten lataaminen tietokannasta

function getSetting (nimi)

paikalliset sql = "VALITSE * FROM asetukset WHERE name = '" .. name .. "'";
paikallinen arvo = -1;

riville db: nrows (sql) do
arvo = row.value;
pää

palautusarvo;
pää

funktio getSettingString (nimi)
paikalliset sql = "VALITSE * FROM asetukset WHERE name = '" .. name .. "'";
local value = '';

riville db: nrows (sql) do
arvo = row.value;
pää

palautusarvo;
pää

Kuten yllä, olemme rikkoneet toiminnot kahteen versioon: yksi kokonaislukuja ja yksi merkkijonoille. Tärkein syy tähän on, että voimme alustaa ne tietyillä arvoilla, jos tietokannassa ei ole asetuksia. GetSetting-funktio palauttaa -1, joka kertoo meille, että asetusta ei ole tallennettu. GetSettingString palauttaa tyhjä merkkijonon.

GetSettingString-toiminto on täysin valinnainen. Ainoa ero sen ja normaalin getSetting-toiminnon välillä on, mitä palautetaan, jos tietokannasta ei löydy mitään.

Vaihe neljä: Käytä asetustaulukkoa

Nyt kun meillä on kovaa työtä, voimme helposti ladata ja tallentaa asetukset paikalliseen tietokantaan. Voimme esimerkiksi mykistää äänen seuraavan lausuman avulla:

setSetting ( 'ääni', false);

Ja voimme käyttää asetusta globaalissa funktiossa äänien soittamiseen:

toiminto playSound (soundID)
jos (getSetting ("sound")) sitten
audio.play (soundID)
pää
pää

Jos haluat kytkeä äänen päälle, asetamme äänen asetukseksi true:

setSetting ( 'ääni', true);

Mukava osa näistä toiminnoista on, että voit tallentaa jonoja tai kokonaislukuja asetustaulukkoon ja hakea ne helposti. Näin voit tehdä mitään tallentamasta pelaajan nimeä tallentamaan korkeat pisteet.

Corona SDK: Kuinka Layer Graphics, Siirrä grafiikkaa ja tuoda grafiikkaa eteen