Un lucru pe care aproape fiecare aplicație și joc are în comun este necesitatea de a stoca și de a prelua date. Chiar și jocul cel mai simplu poate utiliza SQLite pentru a salva numărul versiunii de aplicație, care poate fi folosit pentru a asigura compatibilitatea la efectuarea upgrade-urilor sau setări simple, cum ar fi activarea sau dezactivarea sunetului jocului.
Dacă nu ați lucrat prea mult cu bazele de date sau nu ați utilizat caracteristicile bazei de date în SDK-ul Corona, nu vă faceți griji. Este de fapt un proces relativ simplu datorită puterii LUA și a bazei de date SQLite utilizat în SDK Corona. Acest tutorial va trece prin procesul de creare a tabelului de setări și de stocare și de preluare a informațiilor din acesta.
Rețineți că această tehnică poate merge dincolo de stocarea setărilor bazate pe utilizator. De exemplu, dacă aveți un joc care poate fi jucat utilizând diferite moduri de joc, cum ar fi modul "poveste" și modul "arcadă". Acest tabel de setări poate fi utilizat pentru a stoca modul curent. Orice altă piesă de date pe care doriți să rămâneți persistentă, chiar dacă utilizatorul renunță la joc și o relansează.
Inițializarea bazei de date și crearea tabelului de setări.
Primul lucru pe care trebuie să-l facem este să declarăm biblioteca SQLite și să spunem aplicației noastre unde să găsim fișierul bazei de date. Cel mai bun loc pentru a pune acest cod este chiar în partea de sus a fișierului principal.lua împreună cu celelalte solicită declarații. Fișierul de bază de date va fi creat dacă nu se găsește niciunul și îl vom păstra în dosarul Documente, astfel încât să putem citi de la el și să îl scriem.
cereți "sqlite3" locale data_path = system.pathForFile ("data.db", system.DocumentsDirectory); db = sqlite3.open (path_date);
Observați cum nu este localizată variabila "db". Am făcut acest lucru pentru a ne asigura că putem accesa baza de date în cadrul proiectului nostru. De asemenea, puteți crea un fișier .lua specific pentru toate funcțiile bazei de date și păstrați baza de date localizată în acel fișier.
Apoi, trebuie să creați tabela de baze de date care să stocheze setările noastre:
local sql = "CREATE TABLE DACĂ NU există setări existente (nume, valoare);" db: exec (sql);
Această instrucțiune creează tabelul de setări. Este bine să o executați de fiecare dată când aplicația se încarcă, deoarece dacă tabela există deja, această declarație nu va face nimic. Puteți pune această afirmație exact în locul în care am declarat baza de date sau în funcția care vă configurează aplicația să ruleze. Principala cerință este (1) să executați acele instrucțiuni de fiecare dată când aplicația este lansată și (2) să o executați înainte de orice apeluri pentru a încărca sau salva setările.
Salvarea setărilor în baza de date.
Setarea funcției (nume, valoare) sql = "DELETE din setările WHERE name = '" .. name .. "'"; db: exec (sql) sql = "INSERT INTO setări (nume, valoare) VALUES (" .. nume .. "," .. valoare .. ");"; db: exec (sql) end
funcția setSettingString (nume, valoare) setSetting (nume, valoare "" .. .. "" ");
Funcția de setare șterge toate setările anterioare salvate în tabel și introduce noua noastră valoare. Acesta va funcționa atât cu numere întregi cât și cu șiruri de caractere, dar salvarea unui șir necesită citate unice în jurul valorii de valoare, așa că am folosit funcția setSettingString pentru a face acest lucru suplimentar pentru noi.
Încărcarea setărilor din baza de date.
funcția getSetting (nume)
locale sql = "SELECT * FROM setări WHERE nume = '" .. nume .. "'"; valoarea locală = -1;
pentru rândul din db: nrows (sql) do value = row.value; Sfârșit
valoarea returnata;
funcția getSettingString (nume) local sql = "SELECT * FROM setări WHERE nume = '" .. nume .. "'"; valoarea locală = '';
pentru rândul din db: nrows (sql) do value = row.value; Sfârșit
valoarea returnata;
Ca mai sus, am rupt funcțiile în două versiuni: una pentru numere întregi și una pentru șiruri. Principalul motiv pentru care am făcut acest lucru este să le putem inițializa cu valori specifice dacă nu există nicio setare în baza de date. Funcția getSetting va întoarce un -1, care ne va anunța că setarea nu a fost salvată. The getSettingString va returna un șir gol.
Funcția getSettingString este complet opțională. Singura diferență dintre aceasta și funcția getSetting este cea returnată dacă nu se găsește nimic în baza de date.
Folosind tabelul cu setări.
Acum, că avem munca grea, putem încărca cu ușurință și salva setările într-o bază de date localizată. De exemplu, am putea dezactiva sunetul cu următoarea afirmație:
setSetting ( 'sunet', fals);
Și am putea folosi setarea într-o funcție globală pentru redarea sunetelor:
funcția playSound (soundID) în cazul în care (getSetting ('sunet')) apoi audio.play (soundID) endend
Pentru a readuce sunetul înapoi, setăm setarea sunetului la adevărat:
setSetting ( 'sunet', adevărat);
Partea frumoasă cu privire la aceste funcții este că puteți salva șiruri sau numere întregi în tabelul de setări și le puteți recupera cu ușurință. Acest lucru vă permite să faceți orice de la salvarea unui nume de jucător la salvarea scorului ridicat.