Kā ielādēt un saglabāt spēļu datus Corona SDK

Kā lietot SQLite, lai saglabātu spēles datus un iestatījumus

Vienai lietai gandrīz katrai lietotnei un spēlei ir kopīga nepieciešamība uzglabāt un izgūt datus. Pat vienkāršākā spēle var izmantot SQLite, lai saglabātu lietotnes versijas numuru, ko var izmantot, lai nodrošinātu savietojamību, veicot jauninājumus, vai vienkāršus iestatījumus, piemēram, spēļu skaņas ieslēgšanu vai izslēgšanu.

Ja jūs nekad neesat izdarījis lielu darbu ar datu bāzēm vai izmantojis Corona SDK datubāzes funkcijas, neuztraucieties. Tas ir faktiski samērā vienkāršs process, pateicoties LUA jaudai un SQLite datu bāzes dzinējam, kas tiek izmantots Corona SDK. Šī apmācība iet cauri iestatījumu tabulas izveidei un informācijas glabāšanai un izguvei no tās. Kā attīstīt iPad lietotnes.

Paturiet prātā, ka šī metode var pārsniegt lietotāja iestatījumu iestatījumu saglabāšanu. Piemēram, kas notiek, ja jums ir spēle, kuru var atskaņot, izmantojot dažādus spēles režīmus, piemēram, "stāsts" un "arkādes" režīms. Šo iestatījumu tabulu var izmantot, lai saglabātu pašreizējo režīmu. Vai jebkura cita datu daļa, kuras vēlaties saglabāt noturīgu, pat ja lietotājs iziet no spēles un atkārtoti to uzsāk.

Pirmais solis: datubāzes inicializēšana un iestatījumu tabulas izveide

Pirmā lieta, kas mums jādara, ir deklarēt SQLite bibliotēku un pateikt mūsu lietotnei, kur atrast datubāzes failu. Labākā vieta, kur ievietot šo kodu, ir galvenajā .lua faila augšpusē, bet otrai - prasības. Datubāzes fails tiks izveidots, ja neviens netiks atrasts, un mēs to saglabājam mapē Dokumenti, lai mēs to varētu lasīt un rakstīt uz to.

pieprasīt "sqlite3"
vietējie dati_path = system.pathForFile ("data.db", system.DocumentsDirectory);
db = sqlite3.open (data_path);

Ievērojiet, ka mainīgais "db" nav lokalizēts. Mēs to esam darījuši, lai pārliecinātos, vai mēs varam piekļūt datubāzei visā mūsu projektā. Varat arī izveidot īpašu .lua failu visām datubāzes funkcijām un saglabāt datubāzi, kas lokalizēta šajā datnē.

Tālāk mums ir jāizveido datu bāzes tabula, kurā būs saglabāti mūsu iestatījumi:

vietējais sql = "CREATE TABLE, ja neeksistē iestatījumus (nosaukums, vērtība);"
db: exec (sql);

Šis paziņojums veido mūsu iestatījumu tabulu. Tas ir kārtībā, lai palaistu to ikreiz, kad lietojumprogramma tiek ielādēta, jo, ja tabula jau pastāv, šis paziņojums nedos neko. Jūs varat ievietot šo paziņojumu tieši tā vietā, kur esam deklarējuši datubāzi vai funkciju, kas izveido jūsu lietotni, lai palaistu. Galvenā prasība ir (1), lai izpildītu šos paziņojumus katru reizi, kad lietotne tiek palaista, un (2) izpildīt to pirms jebkādiem zvaniem, lai ielādētu vai saglabātu iestatījumus.

Otrais solis: iestatījumu saglabāšana datu bāzē

funkcija setSetting (nosaukums, vērtība)
sql = "NOLASĪT NO iestatījumiem, KUR nosaukums =" ".. nosaukums .." "";
db: exec (sql)

sql = "INSERT INTO iestatījumi (nosaukums, vērtība) VĒRTĪBAS (" "..vārds .." "," .. vērtība .. ");";
db: exec (sql)
beigas

funkcija setSettingString (nosaukums, vērtība)
setSetting (nosaukums, "" ".. vērtība .." "");
beigas

Iestatīšanas funkcija noņem visus iepriekšējos iestatījumus, kas saglabāti tabulā, un ievieto mūsu jauno vērtību. Tas darbosies gan ar veseliem skaitļiem, gan ar virknes, taču taustiņu saglabāšana prasa vienotas cenas par vērtību, tāpēc mēs esam izmantojuši setSettingString funkciju, lai veiktu šo papildu darbu.

Trešais solis: iestatījumu ielāde no datu bāzes

funkcija getSetting (nosaukums)

vietējais sql = "SELECT * NO iestatījumiem WHERE name =" ".. nosaukums .." "';
vietējā vērtība = -1;

par rindu db: nrows (sql) do
vērtība = row.value;
beigas

atgriešanās vērtība;
beigas

funkcija getSettingString (nosaukums)
vietējais sql = "SELECT * NO iestatījumiem WHERE name =" ".. nosaukums .." "';
vietējā vērtība = '';

par rindu db: nrows (sql) do
vērtība = row.value;
beigas

atgriešanās vērtība;
beigas

Kā jau minēts iepriekš, funkcijas ir sadalītas divās versijās: viena - veseliem skaitļiem un viena - virknei. Galvenais iemesls, kādēļ mēs to izdarījām, ir tāds, ka mēs varam tos inicializēt ar noteiktām vērtībām, ja datubāzē nav iestatījumu. GetSetting funkcija atgriezīs -1, kas mums paziņos, ka iestatījums nav saglabāts. GetSettingString atgriezīs tukšu virkni.

GetSettingString funkcija ir pilnīgi neobligāta. Vienīgā atšķirība starp to un parasto getSetting funkciju ir tā, kas tiek atgriezta, ja nekas nav atrasts datu bāzē.

Ceturtais solis: izmantojiet mūsu iestatījumu tabulu

Tagad, kad mums ir smags darbs, mēs varam viegli ielādēt un saglabāt iestatījumus lokalizētajai datubāzei. Piemēram, mēs varētu izslēgt skaņu ar šādu paziņojumu:

setSetting ('sound', false);

Un mēs varētu izmantot iestatījumu globālajā funkcijā, lai atskaņotu skaņas:

funkcija playSound (soundID)
ja (getSetting ("sound")) tad
audio.play (soundID)
beigas
beigas

Lai ieslēgtu skaņu, mēs vienkārši iestatījām pareizo skaņas iestatījumu:

setSetting ('sound', true);

Laba daļa par šīm funkcijām ir tas, ka varat saglabāt stīgas vai veselus skaitļus iestatījumu tabulā un viegli tos izgūt. Tas ļauj jums kaut ko darīt, saglabājot spēlētāja vārdu, lai saglabātu augstu rezultātu.

Corona SDK: kā kārtot grafiku, pārvietot grafiku un pārveidot grafiku uz priekšu