Как да заредите и запазите данни за игри в SDK на Corona

Как да използвате SQLite за съхраняване на данни и настройки за игри

Едно нещо, което почти всяко приложение и игра има общо е необходимостта да се съхраняват и извличат данни. Дори и най-простата игра може да използва SQLite, за да запази номера на версията на приложението, която може да се използва за осигуряване на съвместимост при извършване на надстройки, или просто настройки като включване или изключване на звука на играта.

Ако никога не сте свършили много работа с бази данни или сте използвали функциите на базата данни в SDK Corona , не се притеснявайте. Това всъщност е сравнително прост процес благодарение на силата на LUA и SQLite базата данни, използвана в Corona SDK. Този урок ще премине през процеса на създаване на таблица с настройки и съхранение и извличане на информация от нея. Как да разработите iPad приложения.

Също така имайте предвид, че тази техника може да надхвърли съхранението на потребителски настройки. Например, какво ще стане, ако имате игра, която може да се играе с различни режими на игра като "история" и "аркаден" режим. Тази таблица с настройки може да се използва за съхраняване на текущия режим. Или всяка друга част от данните, които искате да останете упорити, дори ако потребителят напусне играта и я върне обратно.

Първа стъпка: Инициализиране на базата данни и създаване на таблицата с настройки

Първото нещо, което трябва да направим, е да обявим библиотеката на 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) да го изпълнявате преди повиквания за зареждане или запазване на настройките.

Стъпка втора: Запазване на настройките в базата данни

функция setНастройка (име, стойност)
sql = "Изтриване от настройки WHERE name = '" .. name .. "'";
db: exec (sql)

sql = "INSERT INTO настройки (име, стойност) VALUES (" .. име .. "," .. стойност .. ");";
db: exec (sql)
край

функция setSettingString (име, стойност)
setSetting (име "," .. стойност .. "" ");
край

Функцията setSetting изтрива всички предишни настройки, запазени в таблицата, и вмъква новата ни стойност. Тя ще работи както с цели числа, така и с низове, но запазването на низ изисква единични кавички около стойността, затова използвахме функцията setSettingString, за да направим тази допълнителна работа за нас.

Стъпка трета: Зареждане на настройките от базата данни

функция getSetting (име)

локален sql = "SELECT * FROM настройки WHERE име =" ".. име .." '";
местна стойност = -1;

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

връщаща стойност;
край

функция getSettingString (име)
локален sql = "SELECT * FROM настройки WHERE име =" ".. име .." '";
местна стойност = '';

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

връщаща стойност;
край

Както по-горе, ние сме нарушили функциите в две версии: една за числа и една за струни. Основната причина за това е, че можем да ги инициализираме със специфични стойности, ако в базата данни няма настройка. Функцията getSetting ще върне -1, което ще ни уведоми, че настройката не е запазена. В getSettingString ще се върне празен низ.

Функцията getSettingString е напълно опционална. Единствената разлика между него и нормалната функция getSetting е това, което се връща, ако в базата данни не се намери нищо.

Стъпка четвърта: Използване на нашата таблица с настройки

Сега, когато имаме упорита работа, можем лесно да заредим и запазим настройките на локализирана база данни. Например, можем да изключим звука със следното изявление:

setSetting ( "звук", невярно);

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

функция playSound (звукова идентификация)
ако (getSetting ('sound'))
audio.play (soundID)
край
край

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

setSetting ( "звук", вярно);

Приятната част от тези функции е, че можете да запазите низове или цели числа в таблицата с настройки и да ги извлечете лесно. Това ви позволява да направите каквото и да е, като запазите името на играча, за да запазите високия му резултат.

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