Corona SDK ішіндегі ойын деректерін қалай жүктеуге және сақтауға болады

Ойын деректерін және параметрлерді сақтау үшін SQLite қалай пайдалануға болады

Әрбір бағдарлама мен ойын ортақ бір нәрсе - деректерді сақтау және алу қажеттілігі. Тіпті ең қарапайым ойын SQLite-ні жаңартуларды орындау кезінде үйлесімділікті қамтамасыз ету үшін пайдаланылатын бағдарлама нұсқасының нөмірін сақтау үшін немесе ойын дыбысын қосу немесе өшіру сияқты қарапайым параметрлерді пайдалана алады.

Егер сіз дерекқорлармен көп жұмыс жасамаған болсаңыз немесе Corona SDK-де дерекқордың мүмкіндіктерін пайдаланған болсаңыз, онда алаңдаба. Бұл LUA күші мен Corona SDK-да қолданылатын SQLite дерекқорының күші арқасында шын мәнінде қарапайым процесс. Бұл оқулық параметрлер кестесін құру процедурасынан өтіп, одан ақпаратты сақтау және алу жолымен жүреді. IPad қолданбаларын қалай жасауға болады.

Сондай-ақ, бұл әдіс пайдаланушы негізделген параметрлерді сақтаудан аулақ болатынын есте сақтаңыз. Мысалы, «story» режимі мен «аркад» режимі сияқты әртүрлі ойын режимдерінде ойнауға болатын ойын бар болса не істей аламыз. Бұл параметрлер кестесін ағымдағы режимді сақтау үшін қолдануға болады. Немесе пайдаланушы ойыннан шығып, оны қайта іске қосса да, тұрақты болып қалғыңыз келетін кез келген басқа деректер.

Бірінші қадам: Дерекқорды инициализациялау және параметрлер кестесін жасау

Біріншіден, SQLite кітапханасын жариялап, біздің бағдарламаға дерекқор файлын қай жерде табуға болатынын айтыңыз. Бұл кодты қоюдың ең жақсы жері басқа негізгі талаптарды қоса, main.lua файлының жоғарғы жағында. Егер ешкім табылмаса, дерекқоры файлдары жасалады және біз оны оқып, оған жазу үшін Құжаттар қалтасында сақтаймыз.

«sqlite3» талап етіледі
жергілікті data_path = system.pathForFile («data.db», system.DocumentsDirectory);
db = sqlite3.open (data_path);

«Db» айнымалысы локализацияланбағанына назар аударыңыз. Біз бұл жобаға біздің дерекқорға қол жеткізе алатынымызды қамтамасыз ету үшін мұны жасадық. Сонымен қатар, барлық дерекқор функциялары үшін нақты .lua файлын жасай аласыз және дерекқорға сол файлға оқшауланған болуы мүмкін.

Бұдан әрі, біздің параметрлерді сақтайтын дерекқордың кестесін жасау керек:

local sql = «CREATE TABLE параметрлері (атау, мән) көрсетілмейді»;
db: exec (sql);

Бұл мәлімдеме біздің параметрлер кестесін жасайды. Бағдарламаны жүктеген сайын оны іске қосу жақсы, себебі кесте бұрыннан бар болса, бұл мәлімдеме ештеңе жасамайды. Сіз бұл мәлімдемені дерекқор жариялаған жерде не іске қосылатын қолданбаны орнататын функцияға қоюға болады. Негізгі талаптар: (1) бұл мәлімдемелерді қолданба іске қосылған сайын орындау және (2) параметрлерді жүктеу немесе сақтау үшін кез келген қоңыраулардың алдында оны орындау.

Екінші қадам: Параметрлерді дерекқорға сақтау

функция setSetting (аты, мән)
sql = «Параметрлерден DELETE WHERE name = '» .. name .. «'»;
db: exec (sql)

sql = «INSERT INTO параметрлері (атау, мән) VALUES (» «..атау ..», «.. мән ..»); «;
db: exec (sql)
Соңы

функция setSettingString (аты, мән)
setSetting (аты, «» .. мән .. «» «);
Соңы

SetSetting функциясы кестеге сақталған барлық алдыңғы параметрлерді жояды және жаңа мәнді енгізеді. Ол бүтін сандармен және жолдармен жұмыс істейді, бірақ жолды үнемдеу құндылығы бойынша бірыңғай баға белгілеуді талап етеді, сондықтан біз үшін осы қосымша жұмыс бетін жасау үшін setSettingString функциясын қолдандық.

Үшінші қадам: Дерекқордан параметрлерді жүктеу

function getSetting (аты)

local sql = «SELECT * FROM параметрлері WHERE name = '» .. name .. «';
жергілікті мәні = -1;

db жолындағы жол үшін: nrows (sql) do
value = row.value;
Соңы

қайтару құны;
Соңы

функциясы getSettingString (аты)
local sql = «SELECT * FROM параметрлері WHERE name = '» .. name .. «';
жергілікті мән = '';

db жолындағы жол үшін: nrows (sql) do
value = row.value;
Соңы

қайтару құны;
Соңы

Жоғарыда көрсетілгендей, біз функцияларды екі нұсқаға бөлдік: біреуі бүтін сандар үшін және біреуі жолдар үшін. Мұны жасағанымыздың негізгі себебі дерекқорда ешқандай параметр болмаса, оларды нақты мәндермен инициализациялауға мүмкіндік береді. GetSetting функциясы -1 параметрін қайтарады, ол параметрдің сақталмағанын білдіруге мүмкіндік береді. GetSettingString бос жолды қайтарады.

GetSettingString функциясы толығымен міндетті емес. Деректер базасында ештеңе табылмаса, оны және қалыпты getSetting функциясының арасындағы айырмашылық қайтарылады.

Төртінші қадам: Біздің параметрлер кестесін қолдану

Енді бізде қиын жұмыс жүргізілсе, параметрлерді жергілікті дерекқорға оңай жүктеуге және сақтауға болады. Мысалы, дыбысты келесі сөзбен өшіруге болады:

setSetting ('дыбыс', жалған);

Және дыбыстарды ойнату үшін жаһандық функциядағы параметрді қолдануға болады:

функциясы playSound (soundID)
егер (getSetting ('sound')) болса
audio.play (soundID)
Соңы
Соңы

Дыбысты қайтадан қосу үшін дыбыстық параметрді шын мәніне орнатамыз:

setSetting ('дыбыс', шын);

Бұл функциялар туралы жақсы бөлік параметрлер кестесіндегі жолдарды немесе бүтіндерді сақтауға және оларды оңай алуға болады. Бұл ойыншының аты-жөнін жоғары баллды үнемдеу үшін сақтауға мүмкіндік береді.

Corona SDK: графиканы графикамен қалай жұмыс істеу керек, графиктерді жылжыту және графиктерді алдыңғы жаққа әкелу