Sut i Load ac Arbed Data Gêm yn SDK Corona

Sut i ddefnyddio SQLite i Storio Data Gêm a Gosodiadau

Un peth bron pob app a gêm yn gyffredin yw'r angen i storio ac adfer data. Gall hyd yn oed y gêm fwyaf syml ddefnyddio SQLite i achub rhif y fersiwn app, y gellir ei ddefnyddio i sicrhau cydweddoldeb wrth berfformio uwchraddiadau, neu leoliadau syml fel troi sain y gêm ar neu i ffwrdd.

Os nad ydych erioed wedi gwneud llawer o waith gyda chronfeydd data neu wedi defnyddio nodweddion y gronfa ddata yn SDK Corona , peidiwch â phoeni. Mewn gwirionedd mae'n broses gymharol syml diolch i bŵer LUA a'r peiriant cronfa ddata SQLite a ddefnyddir yn SDK Corona. Bydd y tiwtorial hwn yn cerdded drwy'r broses o greu tabl gosodiadau ac yn storio ac adfer gwybodaeth ohono. Sut i ddatblygu apps iPad.

Cofiwch hefyd y gall y dechneg hon fynd y tu hwnt i storio gosodiadau sy'n seiliedig ar ddefnyddwyr. Er enghraifft, beth os oes gennych gêm y gellir ei chwarae gan ddefnyddio dulliau gwahanol o gêm fel y modd "stori" a'r modd "arcêd". Gellir defnyddio'r tabl gosodiadau yma i storio'r modd cyfredol. Neu unrhyw ddarn arall o ddata yr hoffech ei gadw'n barhaus hyd yn oed os yw'r defnyddiwr yn gweddill o'r gêm a'i ail-lansio.

Cam Un: Cychwyn y gronfa ddata a chreu tabl gosodiadau

Y peth cyntaf y mae angen i ni ei wneud yw datgan y llyfrgell SQLite a dweud wrth ein app ble i ddod o hyd i'r ffeil cronfa ddata. Mae'r lle gorau i roi'r cod hwn yn iawn ar frig y ffeil main.lua ynghyd â'r llall angen datganiadau. Crëir y ffeil gronfa ddata os na ellir dod o hyd i unrhyw un, a byddwn yn ei storio yn y ffolder Dogfennau fel y gallwn ddarllen ohono ac ysgrifennu ato.

ei gwneud yn ofynnol "sqlite3"
data_path = system.pathForFile ("data.db", system.DocumentsDirectory) lleol;
db = sqlite3.open (data_path);

Rhowch wybod sut nad yw'r newidydd "db" wedi'i leoli yn lleol. Rydym wedi gwneud hyn i sicrhau ein bod yn gallu cael mynediad i'r gronfa ddata trwy gydol ein prosiect. Gallwch hefyd greu ffeil .lua benodol ar gyfer yr holl swyddogaethau cronfa ddata a chadw'r gronfa ddata sydd wedi'i leoli i'r ffeil honno.

Nesaf, mae angen inni greu tabl y gronfa ddata a fydd yn storio ein lleoliadau:

lleol sql = "CADW TABL OS NID YDYM YN YSTYRIFOLION (enw, gwerth);"
db: exec (sql);

Mae'r datganiad hwn yn creu ein tabl gosodiadau. Mae'n iawn ei redeg bob tro y mae'r app yn llwythi oherwydd os yw'r tabl eisoes yn bodoli, ni fydd y datganiad hwn yn gwneud unrhyw beth. Gallwch roi'r datganiad hwn yn iawn o dan ble rydym wedi datgan y gronfa ddata neu yn y swyddogaeth sy'n gosod eich app i redeg. Y prif ofyniad yw (1) i gyflawni'r datganiadau hynny bob tro y caiff yr app ei lansio a (2) ei weithredu cyn unrhyw alwadau i lwytho neu arbed gosodiadau.

Cam Dau: Arbed gosodiadau i'r gronfa ddata

set set function (enw, gwerth)
sql = "EITHRIO GAN Gosodiadau LLE enw = '" .. name .. "'";
db: exec (sql)

sql = "INSERT INTO settings (name, value) VALUES ('" ..name .. "'," .. value .. ");";
db: exec (sql)
diwedd

swyddogaeth setSettingString (enw, gwerth)
setSetting (name, "'" .. value .. "'");
diwedd

Mae'r swyddogaeth setSetting yn dileu unrhyw leoliadau blaenorol a gedwir i'r tabl ac yn mewnosod ein gwerth newydd. Bydd yn gweithio gyda chyfansymiau a lllinynnau, ond mae angen llinellau dyfynbris unigol o gwmpas y gwerth, gan arbed llinyn, felly rydym wedi defnyddio'r setSettingString swyddogaeth i wneud y gwaith ychwanegol hwnnw i ni.

Cam Tri: Llwytho gosodiadau o'r gronfa ddata

swyddogaeth getSetting (enw)

lleol sql = "SELECT * O leoliadau LLE enw = '" .. name .. "'";
gwerth lleol = -1;

ar gyfer rhes yn db: nrows (sql) do
gwerth = row.value;
diwedd

gwerth dychwelyd;
diwedd

swyddogaeth getSettingString (enw)
lleol sql = "SELECT * O leoliadau LLE enw = '" .. name .. "'";
gwerth lleol = '';

ar gyfer rhes yn db: nrows (sql) do
gwerth = row.value;
diwedd

gwerth dychwelyd;
diwedd

Fel uchod, rydym wedi torri'r swyddogaethau yn ddwy fersiwn: un ar gyfer integreiddiau ac un ar gyfer tannau. Y prif reswm a wnaethom yw hyn fel y gallwn eu gwireddu â gwerthoedd penodol os nad oes lleoliad yn y gronfa ddata. Bydd y swyddogaeth getSetting yn dychwelyd -1, a fydd yn rhoi gwybod i ni nad yw'r lleoliad wedi ei gadw. Bydd y getSettingString yn dychwelyd llinyn wag.

Mae'r swyddogaeth getSettingString yn gwbl ddewisol. Yr unig wahaniaeth rhyngddo a'r swyddogaeth getSetting arferol yw'r hyn a ddychwelir os na ellir dod o hyd i ddim yn y gronfa ddata.

Cam Pedwar: Defnyddio ein tabl gosodiadau

Nawr ein bod ni wedi gwneud y gwaith caled, gallwn ni lwytho a chadw lleoliadau yn hawdd i gronfa ddata leol. Er enghraifft, gallem niweidio'r sain gyda'r datganiad canlynol:

setSetting ('sain', ffug);

A gallem ddefnyddio'r lleoliad mewn swyddogaeth fyd-eang ar gyfer chwarae seiniau:

swyddogaeth playSound (soundID)
os (getSetting ('sound')) yna
sain.play (soundID)
diwedd
diwedd

I droi'r sain yn ôl, gosodwn y set sain yn wir:

setSetting ('sain', gwir);

Y rhan braf am y swyddogaethau hyn yw y gallwch chi arbed cadwynau neu integreiddiau i'r tabl gosodiadau a'u hatal yn hawdd. Mae hyn yn eich galluogi i wneud unrhyw beth rhag arbed enw chwaraewr i arbed eu sgôr uchel.

Corona SDK: Sut i Haen Graffeg, Symud Graffeg a Dod â Graffeg i Flaen