Hvernig á að hlaða og vista leik gögn í Corona SDK

Hvernig á að nota SQLite til að geyma leikgögn og stillingar

Eitt sem næstum hver app og leikur hefur sameiginlegt er nauðsyn þess að geyma og sækja gögn. Jafnvel einfaldasta leikurinn getur nýtt SQLite til að vista app útgáfuna númer, sem hægt er að nota til að tryggja eindrægni þegar framkvæma uppfærslu eða einfaldar stillingar eins og að kveikja eða slökkva á hljóðinu.

Ef þú hefur aldrei unnið mikið með gagnagrunna eða notað gagnasafnið í Corona SDK skaltu ekki hafa áhyggjur. Það er í raun tiltölulega einfalt ferli þökk sé krafti LUA og SQLite gagnagrunna vélina sem notaður er í Corona SDK. Þessi einkatími mun ganga í gegnum ferlið við að búa til stillingarborð og bæði geyma og sækja upplýsingar frá henni. Hvernig á að þróa iPad forrit.

Hafðu einnig í huga að þessi tækni getur farið út fyrir að geyma notendaviðmið. Til dæmis, hvað ef þú ert með leik sem hægt er að spila með mismunandi leikhamum eins og "saga" ham og "spilakassa" ham. Þessi stillingatafla er hægt að nota til að geyma núverandi stillingu. Eða önnur gögn sem þú vilt vera viðvarandi, jafnvel þótt notandi hætti við leikinn og endurræsir hana.

Skref eitt: Upphafðu gagnagrunninn og búðu til stillingar töfluna

Það fyrsta sem við þurfum að gera er að lýsa SQLite bókasafninu og segja app okkar hvar á að finna gagnagrunninn. Besta staðurinn til að setja þennan kóða er rétt efst á main.lua skrá ásamt öðrum krefjast yfirlýsingar. Gagnagrunnsskráin verður búin til ef ekkert er að finna og við geymum það í skjalamöppunni svo að við getum lesið úr henni og skrifað það.

krefjast "sqlite3"
staðbundin data_path = system.pathForFile ("data.db", system.DocumentsDirectory);
db = sqlite3.open (data_path);

Takið eftir því hvernig "db" breytu er ekki staðbundin. Við höfum gert þetta til að tryggja að við getum nálgast gagnagrunninn í gegnum verkefnið okkar. Þú getur líka búið til tiltekna .lua skrá fyrir alla gagnasafna aðgerðir og geymdu gagnagrunninn sem er staðsettur í þá skrá.

Næstum verðum við að búa til gagnagrunnstöflunni sem geymir stillingar okkar:

staðbundin sql = "Búðu til töflu ef ekki birtir stillingar (nafn, gildi);"
db: exec (sql);

Þessi yfirlýsing skapar stillingarborð okkar. Það er allt í lagi að keyra það í hvert skipti sem appið er fullt af því að ef borðið er þegar til staðar mun þessi yfirlýsing ekki gera neitt. Þú getur sett þessa yfirlýsingu rétt undir þar sem við höfum lýst yfir gagnagrunninum eða í aðgerðinni sem setur upp forritið þitt til að keyra. Helstu kröfurnar eru (1) að framkvæma þessar yfirlýsingar í hvert sinn sem forritið er hleypt af stokkunum og (2) framkvæma það áður en símtöl eru sett til að hlaða inn eða vista stillingar.

Skref tvö: Vistar stillingar í gagnagrunninn

virka setSetting (nafn, gildi)
sql = "DELETE FROM settings WHERE name = '" .. nafn .. "'";
db: exec (sql)

sql = "BREYTA INT stillingar (nafn, gildi) gildi ('" ..name .. "'," .. gildi .. ");";
db: exec (sql)
enda

virka setSettingString (nafn, gildi)
setSetting (nafn, "'" .. gildi .. "'");
enda

SetSet aðgerðin eyðir öllum fyrri stillingum sem eru vistaðar í töflunni og settir inn nýtt gildi. Það mun virka bæði með heilum og strengjum, en að vista streng þarf einfalda vitna í kringum gildi, þannig að við höfum notað setSettingString aðgerðina til að gera þetta aukaverk fyrir okkur.

Skref þrjú: Hleðsla stillingar úr gagnagrunninum

virka getSetting (nafn)

staðbundin sql = "SELECT * FROM stillingar WHERE name = '" .. nafn .. "'";
staðbundið gildi = -1;

fyrir röð í db: nrows (sql) gera
gildi = row.value;
enda

aftur gildi;
enda

virka getSettingString (nafn)
staðbundin sql = "SELECT * FROM stillingar WHERE name = '" .. nafn .. "'";
staðbundið gildi = '';

fyrir röð í db: nrows (sql) gera
gildi = row.value;
enda

aftur gildi;
enda

Eins og hér að ofan höfum við brotið hlutverkin í tvær útgáfur: eitt fyrir heiltala og eitt fyrir strengi. Helstu ástæðan fyrir því að við höfum gert þetta er að við getum frumstilla þær með sérstökum gildum ef engin stilling er til staðar í gagnagrunninum. The getSetting virka mun skila -1, sem mun láta okkur vita að stillingin hefur ekki verið vistuð. The getSettingString skilar auða strengi.

The getSettingString aðgerðin er fullkomlega valfrjáls. Eini munurinn á því og venjulega getSetting virka er það sem er skilað ef ekkert er að finna í gagnagrunninum.

Skref 4: Notaðu stillingarborð okkar

Nú þegar við höfum unnið mikið, getum við auðveldlega hlaðið og vistað stillingar í staðbundna gagnagrunn. Til dæmis gætum við slökkt á hljóðinu með eftirfarandi yfirlýsingu:

setSetting ('hljóð', ósatt);

Og við gætum nýtt sér stillinguna í alþjóðlegu hlutverki til að spila hljóð:

virka playSound (soundID)
ef (getSetting ('hljóð')) þá
hljóð.play (soundID)
enda
enda

Til að kveikja aftur á hljóðinu stilljum við einfaldlega hljóðstillingu til sönnunar:

setSetting ('hljóð', satt);

The góður hluti af þessum aðgerðum er að þú getur vistað strengi eða heiltölur í stillingatöflunni og sótt þær auðveldlega. Þetta gerir þér kleift að gera allt frá því að vista nafn leikmanna til að bjarga stigum sínum.

Corona SDK: Hvernig á að laga grafík, færa grafík og færa grafík til forsíðu