Cum puteți încărca și salva datele jocului în SDK-ul Corona

Cum se utilizează SQLite pentru a stoca datele despre jocuri și setările

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. Cum de a dezvolta aplicații iPad.

De asemenea, rețineți că această tehnică poate depăși 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. Sau orice altă piesă de date pe care doriți să rămâneți persistentă, chiar dacă utilizatorul renunță la joc și îl relansează.

Pasul unu: 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 "sqlite3"
local_data_path = system.pathForFile ("data.db", system.DocumentsDirectory);
db = sqlite3.open (data_path);

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 tabelul bazei de date care să stocheze setările noastre:

local sql = "CREATE TABLE dacă nu există setări (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.

Pasul al doilea: salvarea setărilor în baza de date

Setarea funcției (nume, valoare)
sql = "Șterge din setările WHERE name = '" .. name .. "'";
db: exec (sql)

sql = "INSERT IN setări (nume, valoare) VALUES (" .. nume .. "," .. valoare .. ");";
db: exec (sql)
Sfârşit

Setul de funcțiiSettingString (nume, valoare)
setSetting (nume, " '" .. valoare .. "'");
Sfârşit

Funcția setSetting ș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.

Pasul al treilea: Î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ând în db: nrows (sql) nu
value = row.value;
Sfârşit

valoare returnată;
Sfârşit

funcția getSettingString (nume)
locale sql = "SELECT * FROM setări WHERE nume = '" .. nume .. "'";
valoarea locală = '';

pentru rând în db: nrows (sql) nu
value = row.value;
Sfârşit

valoare returnată;
Sfârşit

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.

Pasul patru: 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)
dacă (getSetting ('sunet')) atunci
audio.play (soundID)
Sfârşit
Sfârşit

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.

Corona SDK: Cum să plasați grafica, să mutați grafica și să aduceți grafică în față