Како да вчитам и зачувам податоци за игра во Корона пакетот

Како да го користите SQLite за складирање на податоци и поставувања на игри

Една работа е дека речиси секоја апликација и игра заеднички е потребата за чување и добивање на податоци. Дури и наједноставната игра може да го користи SQLite за да го зачува бројот на верзијата на апликацијата, кој може да се користи за да се обезбеди компатибилност при вршењето надградби или едноставни поставки како што се вклучување или исклучување на звукот на играта.

Ако никогаш не сте направиле многу работа со бази на податоци или ги користеле функциите на базата на податоци во Corona SDK , не грижете се. Тоа е всушност релативно едноставен процес благодарение на моќта на LUA и моторот на базата на податоци на SQLite што се користи во Corona SDK. Ова упатство ќе помине низ процесот на креирање на табела со подесувања и складирање и прибирање на информации од неа. Како да развие iPad апликации.

Исто така, имајте на ум дека оваа техника може да оди подалеку од складирање на кориснички-базирани поставувања. На пример, што ако имате игра која може да се репродуцира со користење различни режими на игра, како што се "приказна" и "аркадни" режими. Оваа табела со поставки може да се користи за зачувување на тековниот режим. Или било кое друго парче на податоци што сакате да останете упорни, дури и кога корисникот ќе се повлече од играта и ќе го започне повторно.

Чекор еден: Иницијализирање на базата на податоци и создавање на табелата со подесувања

Првото нешто што треба да направите е да ја објави библиотеката SQLite и да ја кажете нашата апликација каде да ја пронајдете датотеката со базата на податоци. Најдоброто место да се стави овој код е во право на врвот на главната датотека .lua заедно со другите бараат изјави. Датотеката со база на податоци ќе се креира ако ниедна не е пронајдена и ќе ја зачуваме во папката Документи за да можеме да читаме и да пишуваме на неа.

бараат "sqlite3"
локални data_path = system.pathForFile ("data.db", system.DocumentsDirectory);
db = sqlite3.open (data_path);

Забележете како променливата "db" не е локализирана. Ние го направивме ова за да се осигуриме дека можеме да пристапиме до базата на податоци во текот на нашиот проект. Можете исто така да креирате специфична .lua датотека за сите функции на базата на податоци и да ја задржите базата на податоци локализирана во таа датотека.

Следно, ние треба да ја креираме табелата со база на податоци која ќе ги складира нашите поставки:

локален sql = "КРЕАЦИЈА ТАБЕЛА И НЕ ПОСТОИ ПОСТАВУВАЊА (име, вредност);"
db: exec (sql);

Оваа изјава ја создава нашата табела за поставки. Во ред е да се стартува секој пат кога ќе се вчита апликацијата, бидејќи ако табелата веќе постои, оваа изјава нема да направи ништо. Можете да ја ставите оваа изјава право под тоа каде ја прогласивме базата на податоци или во функцијата што ја поставува вашата апликација да работи. Главното барање е (1) да ги извршува овие извештаи секој пат кога ќе се изврши апликацијата и (2) да се изврши пред било какви повици за да се вчитаат или зачувуваат поставките.

Чекор два: Зачувување на подесувањата во базата на податоци

функциски сетПребарување (име, вредност)
sql = "Избриши од поставувањата КАДЕ име =" ".. име .." '";
db: exec (sql)

sql = "INSERT INTO поставувања (име, вредност) ВРЕДНОСТИ ('' .. .. .. .. ''," .. вредност .. ");";
db: exec (sql)
крајот

функција setSettingString (име, вредност)
setSetting (име, "'" .. вредност .. "'");
крајот

Функцијата setSetting ги брише сите претходни поставки зачувани на табелата и ја вметнува нашата нова вредност. Ќе работи со цели броеви и стрингови, но зачувувањето на низа бара единечни цитати околу вредноста, така што ја користевме функцијата setSettingString за да го направиме тоа дополнително малку работа за нас.

Чекор три: Вчитување поставки од базата на податоци

функцијата getSetting (име)

local sql = "SELECT * FROM settings WHERE name = '" .. name .. "'";
локална вредност = -1;

за ред во db: nrows (sql) направи
вредност = row.value;
крајот

повратна вредност;
крајот

функцијата getSettingString (име)
local sql = "SELECT * FROM settings WHERE name = '" .. name .. "'";
локална вредност = '';

за ред во db: nrows (sql) направи
вредност = row.value;
крајот

повратна вредност;
крајот

Како погоре, ние ги скршивме функциите во две верзии: една за цели броеви и една за низи. Главната причина што сме ја направиле е да ги иницијализираме со специфични вредности ако во базата не постои опција. Функцијата getSetting ќе врати -1, што ќе нѐ извести дека поставката не е зачувана. GetSettingString ќе врати празен стринг.

Функцијата getSettingString е целосно опционална. Единствената разлика помеѓу тоа и нормалната функцијата getSetting е она што се враќа ако ништо не се пронајде во базата на податоци.

Чекор четири: Користење на нашата табела за подесувања

Сега, кога имаме напорна работа, лесно можеме да ги вчитаме и зачуваме поставувањата во локализирана база на податоци. На пример, би можеле да го исклучиме звукот со следнава изјава:

setSetting ("звук", false);

И ние би можеле да го искористиме поставувањето во глобална функција за репродукција на звуци:

функцијата playSound (soundID)
ако (getSetting ("звук") тогаш)
аудио.игра (soundID)
крајот
крајот

За повторно да го вклучиме звукот, ние едноставно го поставуваме поставувањето на звукот на true:

setSetting ("звук", точно);

Убав дел за овие функции е што можете да заштедите низа или цели броеви во табелата за подесувања и лесно да ги превземете. Ова ви овозможува да направите нешто од спасувањето на името на играчот до зачувување на нивниот висок резултат.

Корона SDK: Како да слоевит графика, преместете ја графика и внесете графика напред