Paano Mag-load at I-save ang Data ng Laro sa Corona SDK

Paano Gamitin ang SQLite upang I-imbak ang Data ng Laro at Mga Setting

Ang isang bagay na halos bawat app at laro ay may karaniwan ay ang pangangailangan na mag-imbak at makuha ang data. Kahit na ang pinaka-simpleng laro ay maaaring magamit ang SQLite upang i-save ang numero ng bersyon ng app, na maaaring magamit upang matiyak ang pagiging tugma kapag nagsagawa ng mga upgrade, o mga simpleng setting tulad ng pag-on o pag-off ng tunog ng laro.

Kung hindi mo nagawa ng maraming trabaho sa mga database o ginagamit ang mga tampok ng database sa Corona SDK , huwag mag-alala. Ito ay talagang isang medyo tapat na proseso salamat sa kapangyarihan ng LUA at ang SQLite database engine na ginagamit sa Corona SDK. Ang tutorial na ito ay lalakad sa proseso ng paglikha ng isang table ng mga setting at parehong pag-iimbak at pagkuha ng impormasyon mula dito. Paano bumuo ng mga apps sa iPad.

Tandaan din na ang pamamaraan na ito ay maaaring maging lampas sa pagtatabi ng mga setting ng user-based. Halimbawa, paano kung mayroon kang laro na maaaring i-play gamit ang iba't ibang mga mode ng laro tulad ng mode na "istorya" at "arcade". Maaaring gamitin ang talahanayan ng setting na ito upang iimbak ang kasalukuyang mode. O anumang iba pang mga piraso ng data na nais mong manatiling persistent kahit na ang gumagamit ay umalis sa labas ng laro at muling ilulunsad ito.

Hakbang One: Pinasimulan ang database at paglikha ng talahanayan ng mga setting

Ang unang bagay na kailangan naming gawin ay ipahayag ang SQLite library at sabihin sa aming app kung saan makikita ang database file. Ang pinakamagandang lugar upang ilagay ang code na ito ay nasa tuktok ng main.lua file kasama ang iba pang nangangailangan ng mga pahayag. Ang file ng database ay malilikha kung walang nahanap, at itimbak namin ito sa folder ng Mga Dokumento upang mabasa namin ito at isulat dito.

nangangailangan ng "sqlite3"
lokal data_path = system.pathForFile ("data.db", system.DocumentsDirectory);
db = sqlite3.open (data_path);

Pansinin kung paano hindi naisalokal ang variable na "db". Ginawa namin ito upang matiyak na maaari naming ma-access ang database sa buong aming proyekto. Maaari ka ring lumikha ng isang tukoy na. Lua file para sa lahat ng mga function ng database at panatilihin ang database na naisalokal sa file na iyon.

Susunod, kailangan naming lumikha ng talahanayan ng database na mag-iimbak ng aming mga setting:

lokal na sql = "Gumawa ng TALAAN KUNG HINDI NANGYARING mga setting (pangalan, halaga);"
db: exec (sql);

Ang pahayag na ito ay lumilikha ng talahanayan ng aming mga setting. Ito ay okay na patakbuhin ito sa bawat oras na naglo-load ang app dahil kung ang mesa ay mayroon na, ang pahayag na ito ay hindi magagawa. Maaari mong ilagay ang pahayag na ito sa ilalim ng kung saan namin ipinahayag ang database o sa function na nagtatakda ng iyong app na tumakbo. Ang pangunahing kinakailangan ay (1) upang maisagawa ang mga pahayag sa tuwing inilunsad ang app at (2) isagawa ito bago ang anumang mga tawag upang i-load o i-save ang mga setting.

Ikalawang Hakbang: Pag-save ng mga setting sa database

function setSetting (pangalan, halaga)
sql = "BUMOTO NG MGA setting SAAN pangalan = '" .. pangalan .. "'";
db: exec (sql)

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

function setSettingString (pangalan, halaga)
setSetting (pangalan, "'" .. value .. "'");
wakas

Tinatanggal ng function na setSetting ang anumang nakaraang mga setting na na-save sa talahanayan at isingit ang aming bagong halaga. Ito ay gumagana sa parehong integers at mga string, ngunit ang pag-save ng isang string ay nangangailangan ng solong quotes sa paligid ng halaga, kaya ginamit namin ang setSettingString function na gawin na ang dagdag na bit ng trabaho para sa amin.

Hakbang Tatlong: Naglo-load ng mga setting mula sa database

function getSetting (pangalan)

lokal na sql = "SELECT * FROM settings WHERE name = '" .. name .. "'";
lokal na halaga = -1;

para sa hilera sa db: nrows (sql) gawin
halaga = row.value;
wakas

bumalik halaga;
wakas

function getSettingString (pangalan)
lokal na sql = "SELECT * FROM settings WHERE name = '" .. name .. "'";
lokal na halaga = '';

para sa hilera sa db: nrows (sql) gawin
halaga = row.value;
wakas

bumalik halaga;
wakas

Tulad ng nasa itaas, sinira namin ang mga function sa dalawang bersyon: isa para sa integer at isa para sa mga string. Ang pangunahing dahilan na nagawa namin ito ay upang maisimulan namin ang mga ito sa mga tukoy na halaga kung walang setting na umiiral sa database. Ang function na getSetting ay babalik ng isang -1, na ipaalam sa amin na ang setting ay hindi nai-save. Ang getSettingString ay magbabalik ng isang blangko na string.

Ang getSettingString function ay ganap na opsyonal. Ang tanging pagkakaiba sa pagitan nito at ang normal na function na getSetting ay kung ano ang ibinalik kung wala ay matatagpuan sa database.

Apat na Hakbang: Gamit ang talahanayan ng aming mga setting

Ngayon na kami ay may matapang na trabaho tapos na, maaari naming madaling i-load at i-save ang mga setting sa isang naisalokal database. Halimbawa, maaari naming i-mute ang tunog sa sumusunod na pahayag:

setSetting ('tunog', hindi totoo);

At maaari naming gamitin ang setting sa isang pandaigdigang pag-andar para sa mga tunog ng pag-play:

function playSound (soundID)
kung (getSetting ('tunog')) pagkatapos
audio.play (soundID)
wakas
wakas

Upang i-on ang tunog sa likod, itakda lang namin ang setting ng tunog sa totoo:

setSetting ('tunog', totoo);

Ang magandang bahagi tungkol sa mga function na ito ay maaari mong i-save ang mga string o integers sa table ng mga setting at makuha ang mga ito nang madali. Pinapayagan ka nito na gumawa ng anumang bagay mula sa pag-save ng pangalan ng manlalaro sa pag-save ng kanilang mataas na marka.

Corona SDK: Paano Layer Graphics, Ilipat Graphics at Dalhin Graphics sa Front