Ինչպես բեռնել եւ պահպանել խաղային տվյալները Corona SDK- ում

Ինչպես օգտվել SQLite- ից Game Data and Settings- ը

Մի բան գրեթե ամեն մի ծրագիր եւ խաղ ընդհանուր առմամբ անհրաժեշտ է տվյալների պահպանման եւ տվյալների վերականգնում: Նույնիսկ ամենատարածված խաղը կարող է օգտագործել SQLite- ի համար հավելվածի համարի համարը փրկելու համար, որը կարող է օգտագործվել ապահովելու համար համատեղելիությունը կատարելագործման ժամանակ կամ պարզ պարամետրեր, ինչպիսիք են խաղային ձայնը դարձնել կամ անջատելը:

Եթե ​​դուք երբեւէ չեք աշխատել տվյալների բազաների հետ կամ օգտագործել Corona SDK- ի տվյալների բազայի առանձնահատկությունները, մի անհանգստացեք: Դա իրականում համեմատաբար պարզ գործընթաց է, շնորհիվ LUA- ի զորության եւ Corona SDK- ում օգտագործվող SQLite տվյալների բազայի շարժիչի: Այս ձեռնարկը քայլելու է պարամետրերի սեղանի ստեղծման եւ դրանցից պահելու եւ տվյալների ստացման գործընթացով: Ինչպես մշակել iPad հավելվածները:

Հիշեք նաեւ, որ այս տեխնիկան կարող է դուրս գալ օգտագործողի վրա հիմնված պարամետրերի պահպանումից: Օրինակ, եթե ինչ-որ խաղ ունեք, որը կարող է խաղացել տարբեր խաղային ռեժիմների միջոցով, ինչպիսիք են «պատմություն» ռեժիմը եւ «արկադային» ռեժիմը: Այս կարգավորումների աղյուսակը կարող է օգտագործվել ընթացիկ ռեժիմը պահելու համար: Կամ որեւէ այլ տվյալներ, որոնք ցանկանում եք մնալ համառ, նույնիսկ եթե օգտագործողը դուրս գա խաղից եւ վերաբացվի:

Քայլ մեկ. Տվյալների բազայի սկզբնավորման եւ կարգավորող սեղան ստեղծելու համար

Առաջին բանը, որ մենք պետք է անենք, հայտարարում է SQLite- ի գրադարանը եւ մեր ծրագիրը, որտեղ գտնել տվյալների բազայի ֆայլը: Լավագույն տեղը, այս կոդը տեղադրելու համար, ճիշտ է main.lua ֆայլի վերեւում, մյուս պահանջների հետ միասին: Տվյալների բազայի ֆայլը կստեղծվի, եթե ոչ մեկը չի գտնվել, եւ մենք այն պահում ենք Փաստաթղթերի թղթապանակում, որպեսզի մենք կարողանանք կարդալ եւ գրել:

պահանջում է «sqlite3»
տեղական data_path = system.pathForFile ("data.db", system.DocumentsDirectory);
db = sqlite3.open (data_path);

Ուշադրություն դարձրեք, թե ինչպես է «db» փոփոխականը տեղայնացված չէ: Մենք դա արեցինք, որպեսզի համոզվեք, որ մենք կարող ենք մուտք գործել տվյալների բազա մեր նախագծում: Դուք նաեւ կարող եք ստեղծել հատուկ .lua ֆայլ բոլոր տվյալների բազայի գործառույթների համար եւ պահել տվյալների բազան տեղայնացված այդ ֆայլին:

Հաջորդը, մենք պետք է ստեղծենք տվյալների բազայի սեղան, որը կփրկի մեր պարամետրերը.

տեղական sql = "ՍՏԵՂԾԵԼ ՍԵՂՄԵՔ, եթե չկառուցվի պարամետրեր (անուն, արժեք);"
db: exec (sql);

Այս հայտարարությունը ստեղծում է մեր պարամետրերի աղյուսակը: Լավ է այն ամենը, երբ ծրագիրը բեռնում է, քանի որ եթե սեղանը արդեն գոյություն ունի, այս հայտարարությունը ոչինչ չի անի: Դուք կարող եք այս հայտարարությունը տեղադրել հենց այն վայրում, որտեղ մենք հայտարարեցինք տվյալների բազան կամ այն ​​գործառույթում, որը ստեղծում է ձեր հավելվածը: Հիմնական պահանջն այն է, (1) կիրառել այդ հայտարարությունները ամեն անգամ, երբ ծրագիրը սկսվում է եւ (2) կատարում այն ​​նախքան ցանկացած կարգավորումներ բեռնելու կամ պահպանելու համար:

Քայլ երկրորդ. Տվյալների բազայի պահպանումը

գործառույթը setSetting (անուն, արժեք)
sql = "Սահմանել կարգավորումներ WHERE name = '" .. name .. "';
db: exec (sql)

sql = "INSERT INTO- ի պարամետրերը (անուն, արժեք) VALUES (" ".. անունը ..", ".. արժեքը .."); ";
db: exec (sql)
վերջ

գործառույթը setSettingString (անուն, արժեք)
setSetting (անունը, "" .. արժեքը .. "");
վերջ

SetSetting գործառույթը ջնջում է սեղանին պահված բոլոր նախորդ պարամետրերը եւ ներդնում է մեր նոր արժեքը: Այն կաշխատի երկու թվանշաններով եւ տողերով, բայց ստեղնը պահելու համար պահանջվում է միայնակ գնանշումներ արժեքի շուրջ, այնպես որ մենք օգտագործեցինք setSettingString գործառույթը `մեզ համար լրացուցիչ աշխատանք կատարելու համար:

Քայլ Երեք. Բեռնումները տվյալների բազայից

գործառույթը getSetting (անուն)

տեղական sql = "SELECT * FROM settings- ից WHERE name = '" .. name .. "';
տեղական արժեք = -1;

համար db- ում: nrows (sql) անել
value = row.value;
վերջ

վերադարձի արժեքը;
վերջ

գործառույթը getSettingString (անուն)
տեղական sql = "SELECT * FROM settings- ից WHERE name = '" .. name .. "';
տեղական արժեք = '';

համար db- ում: nrows (sql) անել
value = row.value;
վերջ

վերադարձի արժեքը;
վերջ

Ինչպես վերեւում, մենք գործառույթները կոտրեցինք երկու տարբերակով `մեկը` ամբողջ թվերի եւ մեկի տողերի համար: Հիմնական պատճառը, որ մենք արել ենք, այնպես, որ մենք կարողանանք դրանք նախնական արժեքներով գործարկել, եթե տվյալների բազայում որեւէ կարգավորում չկա: GetSetting գործառույթը կվերադառնա -1, որը մեզ տեղյակ պահի, որ կարգավորումը չի պահպանվել: GetSettingString- ը կվերադարձնի դատարկ տողը:

GetSettingString գործառույթը լիովին պարտադիր է: Միակ տարբերությունը եւ նորմալ getSetting ֆունկցիան այն է, ինչ վերադարձվում է, եթե տվյալների բազայում ոչինչ չի գտնվել:

Քայլ չորս. Օգտագործելով մեր պարամետրերի աղյուսակը

Այժմ, երբ մենք ունենք ծանր աշխատանք, մենք հեշտությամբ կարող ենք բեռնել եւ պահպանել տեղադրումները տեղայնացված տվյալների բազայում: Օրինակ, մենք կարող էինք հնչեցնել ձայնը հետեւյալ հայտարարությամբ.

setSetting («ձայն», կեղծ);

Եվ մենք կարող էինք օգտվել համընդհանուր գործառույթից:

գործառույթը playSound (soundID)
եթե (getSetting ('sound')) ապա
audio.play (soundID)
վերջ
վերջ

Ձայնը վերադարձնելու համար պարզապես ձայնային տեղադրում ենք ճշմարիտ:

setSetting («ձայն», ճշմարիտ);

Այս գործառույթների մասին հաճելի մասը կարող եք պահպանել տողերի կամ ամբողջ թվեր պարամետրերի աղյուսակում եւ հեշտությամբ վերականգնել դրանք: Սա թույլ է տալիս որեւէ բան անել, խաղացողի անունը փրկելու համար `բարձր գնահատելու համար:

Corona SDK: Ինչպես շերտերի գրաֆիկա, տեղափոխել գրաֆիկա եւ բերել գրաֆիկա դեպի ճակատ