Kaip įkelti ir išsaugoti žaidimo duomenis Corona SDK

Kaip naudotis "SQLite" žaidimo duomenims ir nustatymams išsaugoti

Vienas dalykas beveik kiekvienai programai ir žaidimui yra bendras - reikia saugoti ir išgauti duomenis. Net paprasčiausias žaidimas gali naudoti "SQLite", norint išsaugoti programos versijos numerį, kurį galima naudoti, kad užtikrintų suderinamumą vykdant naujinius, arba paprastus nustatymus, tokius kaip žaidimo garso įjungimas arba išjungimas.

Jei niekada nepadarėte daug darbo su duomenų bazėmis ar naudojate " Corona SDK" duomenų bazės funkcijas, nesijaudinkite. Tai iš tiesų gana nesudėtingas procesas, nes LUA ir SQLite duomenų bazės variklis naudojamas "Corona SDK". Šioje pamokoje bus pereita prie nustatymų lentelės kūrimo ir informacijos saugojimo ir išrinkimo proceso. Kaip kurti "iPad" programas.

Taip pat nepamirškite, kad ši technika gali viršyti vartotojo nustatytų nustatymų išsaugojimą. Pavyzdžiui, jei turite žaidimą, kurį galima paleisti naudojant skirtingus žaidimo režimus, pvz., "Istorijos" režimą ir "arkados" režimą. Šią nustatymų lentelę galima naudoti esamo režimo saugojimui. Arba bet kokia kita duomenų dalis, kurią norite išlaikyti, net jei vartotojas išeina iš žaidimo ir paleidžia ją iš naujo.

Pirmas žingsnis: inicijuoja duomenų bazę ir sukuria nustatymų lentelę

Pirmas dalykas, kurį turime padaryti, yra paskelbti SQLite biblioteką ir pasakyti mūsų programai, kur rasti duomenų bazės failą. Geriausia vieta įdėti šį kodą tiesiai į pagrindinio .lua failo viršuje kartu su kita reikalauja pareiškimų. Duomenų bazės failas bus sukurtas, jei joks nerastas, ir mes jį saugome aplanke "Dokumentai", kad galėtume jį perskaityti ir parašyti į jį.

reikalauti "sqlite3"
vietiniai data_path = system.pathForFile ("data.db", system.DocumentsDirectory);
db = sqlite3.open (data_path);

Atkreipkite dėmesį, kaip "db" kintamasis nėra lokalizuotas. Mes padarėme tai, kad įsitikintume, ar galime pasiekti duomenų bazę per visą mūsų projektą. Taip pat galite sukurti konkretų failą .lua visoms duomenų bazės funkcijoms ir laikyti duomenų bazę lokalizuota į tą failą.

Tada mes turime sukurti duomenų bazės lentelę, kurioje bus saugomi mūsų nustatymai:

vietinis sql = "CREATE TABLE, jei neegzistuoja nustatymai (pavadinimas, vertė);"
db: exec (sql);

Šis teiginys sukuria mūsų nustatymų lentelę. Tai gerai paleisti kiekvieną kartą, kai programa įkeliama, nes jei lentelė jau egzistuoja, šis teiginys nieko nedarys. Galite įdėti šį teiginį tiesiai po to, kai paskelbėme duomenų bazę arba funkciją, kuri nustato jūsų programą paleisti. Pagrindinis reikalavimas yra (1) atlikti šiuos pareiškimus kiekvieną kartą, kai programa paleidžiama, ir (2) įvykdyti ją prieš bet kokius skambučius įkelti arba išsaugoti nustatymus.

Antras žingsnis: išsaugokite nustatymus į duomenų bazę

funkcija setSetting (pavadinimas, vertė)
sql = "Ištrinti iš nustatymų WHERE name = '" .. pavadinimas .. "' ';
db: exec (sql)

sql = "INSERT INTO settings (pavadinimas, vertė) VALUES (" "..name .." "," .. vertė .. ");";
db: exec (sql)
galas

funkcija setSettingString (pavadinimas, vertė)
setSetting (pavadinimas, "" ".. vertė .." "");
galas

"SetSetting" funkcija ištrina bet kokius ankstesnius nustatymus, išsaugotus lentelėje, ir įterpia mūsų naują vertę. Jis dirbs tiek su sveikais skaičiais, tiek su stygomis, bet taupant eilutę reikia vienos vertės kabučių, taigi mes panaudojome setSettingString funkciją, kad atliktume šiek tiek daugiau darbo už mus.

Trečias veiksmas: įkeliami nustatymai iš duomenų bazės

funkcija getSetting (pavadinimas)

vietinis sql = "SELECT * iš nustatymų WHERE name = '" .. pavadinimas .. "' ';
vietinė vertė = -1;

eilutėje db: nrows (sql) daryti
vertė = row.value;
galas

grąžina vertę;
galas

funkcija getSettingString (pavadinimas)
vietinis sql = "SELECT * iš nustatymų WHERE name = '" .. pavadinimas .. "' ';
vietinė vertė = '';

eilutėje db: nrows (sql) daryti
vertė = row.value;
galas

grąžina vertę;
galas

Kaip jau minėta, funkcijas suskirstėme į dvi versijas: viena - sveikiems ir 1 eilutėms. Pagrindinė priežastis, kodėl mes tai padarėme, yra tokia, kad galėtume inicijuoti juos su tam tikromis vertybėmis, jei duomenų bazėje nėra nustatymų. "GetSetting" funkcija grąžins -1, o tai leis mums žinoti, kad nustatymas nebuvo išsaugotas. GetSettingString grąžins tuščią eilutę.

"GetSettingString" funkcija yra visiškai neprivaloma. Vienintelis skirtumas tarp jo ir įprastos "getSetting" funkcijos yra tai, kas grąžinama, jei nieko nerasta duomenų bazėje.

Ketvirtas žingsnis: naudojant mūsų nustatymų lentelę

Dabar, kai sunkiai dirbame, galime lengvai įkelti ir išsaugoti nustatymus į lokalizuotą duomenų bazę. Pavyzdžiui, galėtume nutildyti garsą tokiu teiginiu:

setSetting ("garso", false);

Ir galėtume panaudoti nustatymą pagal pasaulinę funkciją garsų grojimui:

funkcija playSound (soundID)
jei (getSetting ("garso")) tada
audio.play (soundID)
galas
galas

Norėdami vėl įjungti garsą, tiesiog nustatykite garsą tiesiškai:

setSetting ("garso", tiesa);

Graži dalis apie šias funkcijas - galite išsaugoti eilučių ar sveikų skaičių nustatymų lentelėje ir lengvai jas nuskaityti. Tai leidžia jums ką nors padaryti, taupydami žaidėjo vardą, taupydami aukštą rezultatą.

Corona SDK: kaip sluoksnio grafika, perkelti grafiką ir grąžinti grafiką į priekį