Hoe lade en bewarje spultsje yn 'e Corona SDK

Skeakelje om SQLite te spyljen foar spultsje en ynstellings

Ien ding hast elke app en spiel yn 'e mienskip is it needsaak om gegevens te bewarjen en werom te heljen. Sels it meast ienfâldich spultsje kin SQLite brûke om it app ferwurke nûmer te bewarjen, dat kin brûkt wurde om kompatibiliteit te garandearjen as bywurkings útfierd binne, of ienfâldige ynstellingen lykas it lûd fan it spultsje op of út.

As jo ​​noait in protte wurken mei databases dien hawwe of de funksjes fan de database yn 'e Corona SDK brûke , spesjaal net. It is eigentlik in relatyf ienfâldige proses troch de krêft fan LUA en de SQLite databankmotor brûkt yn 'e Corona SDK. Dit ynstruksjetal spilet troch it proses fan it meitsjen fan in ynstellingsbalke en it bewarjen en opheljen fan ynformaasje út it. Hoe meitsje iPad apps ûntwikkelje.

Tink derom dat dizze technyk net fierder it opslaan fan brûkers-basearre ynstellings. Bygelyks, wat as jo in spiel hawwe dat kinne brûkt wurde troch ferskate spylassasses lykas "ferhaal" mode en "arcade" modus. Dizze ynstellingsbalke kin brûkt wurde om de aktuele modus te bewarjen. Oder in oar stikje gegevens dat jo persistint bliuwe wolle, sels as de brûker út it spultsje komt en it oplosse sil.

Stap ien: Inisjalisearjen fan de databank en it meitsjen fan de ynstelling tabel

It earste ding dat wy nedich binne, is de SQLite bibleteek te deklarearjen en fertel ús app wêr 't de databank bestiet. It bêste plak om dizze koade te pleatsen, is boppe-oan 'e top of the main.so file along with the other required statements. De databank-bestân sil makke wurde as der gjinien fûn is, en wy sille it yn it dokumint map bewarje, sadat wy it lêze kinne en skriuwe.

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

Notice hoe't de fariant "db" net lokale is. Wy hawwe dat dien om te soargjen dat wy tagelyk tagonklik meitsje kinne op ús database. Jo kinne ek in spesifike .lua-bestân meitsje foar alle database-funksjes en bewarje de databank pleatst wurde nei dy bestân.

Dan moatte wy de databank tabel meitsje dy't ús ynstellingen opslaan:

local sql = "TABLET skeppe as net opsjes befetsje (namme, wearde);"
db: exec (sql);

Dizze deklaraasje makket ús tabel foar ynstellings. It is goed om it elemint te fieren as de app lêst, omdat as de tabel al bestiet, sil dizze ferklearring neat dwaan. Jo kinne dizze ferklearring daliks setten ûnder wêr't wy de database oanjûn hawwe of yn 'e funksje dy't jo app oanfalt. De wichtichste easken is (1) elke kearen as de app wurde útfiert en (2) it útfiere foar elke oprop om de ynstellingen te laden of te bewarjen.

Stap Twa: Ynstellings opslaan nei de database

funksje setSetting (namme, wearde)
sql = "DELETE FROM ynstellings WHERE namme =" ".. name .." '";
db: exec (sql)

sql = "INSERT yn ynstellingen (namme, wearde) VALUES ('" ..name .. "'," .. wearde .. ");";
db: exec (sql)
ein

funksje setSettingString (namme, wearde)
setSetting (namme, "" "wearde .." '");
ein

De setSetting-funksje ferwideret alle foarige ynstellings dy't bewarre binne oan de tabel en sette ús nije wearde. It sil wurkje mei beide yntekeners en strings, mar it bewarjen fan in tekenrige fereasket inkele quotes om 'e wearde, sadat wy de setSettingString funksje brûke om dat ekstra wurk fan ús te dwaan.

Stap 3: Laden fan ynstellings út de database

function getSetting (namme)

local sql = "SELECT * FROM ynstellings WHERE namme =" ".. name .." '";
lokale wearde = -1;

foar rige yn db: nrows (sql) do
value = row.value;
ein

return value;
ein

function getSettingString (namme)
local sql = "SELECT * FROM ynstellings WHERE namme =" ".. name .." '";
lokale wearde = '';

foar rige yn db: nrows (sql) do
value = row.value;
ein

return value;
ein

As boppesteande hawwe wy de funksjes yn twa ferzjes brekt: ien foar inallen en ien foar strings. De wichtichste reden dat wy dit dien hawwe, sa kinne wy ​​se mei spesifike wearden yn initialisearje as der gjin opsje is yn de database. De getSetting-funksje sil in -1 weromjaan, dy't ús witte litte dat de ynstelling net bewarre is. De getSettingString sil in lege tekenrige werjaan.

De getSettingString-funksje is folslein fakultatyf. It iennichste ferskil tusken dizze en de gewoane getSetting-funksje is wat weromjûn wurdt as der neat yn 'e databank fûn is.

Stap fjouwer: Gebrûk fan ús tabel ynstellings

No dat wy de hurde wurke dien hawwe, kinne wy ​​de ynstellingen ienfâldich ynlade en bewarje yn in lokaal databank. Sa kinne wy ​​de lûd bygelyks de folgjende deklaraasje ferstjoere:

setSetting ('lûd', falsk);

En wy kinne de ynstellings brûke yn in globale funksje foar it spyljen fan lûden:

funksje playSound (soundID)
as (getSetting ('sound')) dan
audio.play (soundID)
ein
ein

Om it lûd werom te setten, sette wy gewoan de lûd-ynstelling yn:

setSetting ('lûd', wier);

It lekker diel fan dizze funksjes kinst strings of inallen brûke nei de ynstellingsstafel en kinne se maklik weromfiere. Dit soarget dat jo alles dwaan fan it bewarjen fan de namme fan in spiler om har hege score te bewarjen.

Corona SDK: Hokker grafyk lizze, grafyk bewurkje en Bring Graphics nei foaren bringe