Corona SDK da o'yin ma'lumotlarini qanday yuklab olish va saqlash mumkin

SQLite o'yin ma'lumotlarini va sozlamalarini saqlash uchun qanday foydalaniladi

Deyarli har bir narsa va o'yin umumiy fikrga ega bo'lib, ma'lumotlarni saqlash va olish kerak. Hatto eng oddiy o'yin, SQLite'yi dastur versiya raqamini saqlash uchun ishlatishi mumkin, bu esa yangilanishlarni amalga oshirishda muvofiqlikni ta'minlash uchun ishlatilishi mumkin, yoki o'yin ovozini yoqish yoki o'chirish kabi oddiy sozlamalar.

Agar ma'lumotlar bazalari bilan hech qachon ko'p ish qilmagan bo'lsangiz yoki Corona SDK da ma'lumotlar bazasi xususiyatlaridan foydalangan bo'lsangiz, tashvishlanmang. Bu LUA kuchi va Corona SDKda ishlatiladigan SQLite ma'lumotlar bazasi vositasi tufayli aslida nisbatan sodda jarayon. Ushbu qo'llanma sozlamalar jadvali yaratish jarayonidan o'tib, undan ma'lumotni saqlash va olish jarayoniga o'tadi. IPad ilovalarini qanday ishlab chiqish kerak.

Bundan tashqari, ushbu usul foydalanuvchi asosidagi sozlamalarni saqlab qolishdan tashqarida bo'lishi mumkinligini yodda tuting. Misol uchun, siz "hikoyalar" rejimida va "arcade" rejimida turli xil o'yin usullaridan foydalanishingiz mumkin bo'lgan o'yiningiz bo'lsa nima bo'ladi. Ushbu sozlamalar jadvali mavjud rejimni saqlash uchun ishlatilishi mumkin. Yoki foydalanuvchi o'yinni tark etsa va uni qayta ishga tushirsa ham qat'iy qolishni xohlagan boshqa ma'lumotlar.

Birinchi qadam: ma'lumotlar bazasini ishga tushirish va sozlash jadvalini yaratish

Nima qilishimiz kerak bo'lgan birinchi narsa, SQLite kutubxonasini e'lon qilish va dasturimiz ma'lumotlar bazasi faylini qaerdan topishini ayting. Ushbu kodni joylashtirish uchun eng yaxshi joy boshqa main talablar bilan birga main.lua faylining yuqori qismida joylashgan. Hech kim topilmasa, ma'lumotlar bazasi fayli hosil bo'ladi va uni biz undan o'qib, unga yoza olishimiz uchun uni Hujjatlar papkasida saqlaymiz.

"sqlite3" ni talab qilish
Mahalliy data_path = system.pathForFile ("data.db", system.DocumentsDirectory);
JB = sqlite3.open (data_path);

"JB" o'zgaruvchining qanday qilib lokallashtirilganligiga e'tibor bering. Biz loyihamiz davomida ma'lumotlar bazasiga kirishimiz mumkinligini ta'minlash uchun buni qildik. Bundan tashqari, barcha ma'lumotlar bazasi funktsiyalari uchun maxsus .lua faylini yaratishingiz va ma'lumotlar bazasiga o'sha faylga joylashtirilgan holda saqlashingiz mumkin.

Keyinchalik biz sozlamalarni saqlaydigan ma'lumotlar bazasi jadvalini yaratishimiz kerak:

local sql = "CREATE TABLE agar parametrlarni (nom, qiymat) ko'rmasa;"
jb: exec (sql);

Ushbu jadval bizning sozlamalar jadvalimizni yaratadi. Ilovani yuklaganida uni ishga tushirishning iloji yo'q, chunki jadval allaqachon mavjud bo'lsa, bu so'z hech narsa qilmaydi. Siz bu ma'lumotni ma'lumotlar bazasini biz e'lon qilgan joyga yoki ilovangizni ishga tushiradigan funksiyasiga qo'yishingiz mumkin. Asosiy talab: (1) ilovalarni ishga tushirilganda ushbu bayonotlarni bajarish va (2) sozlamalarni o'rnatish yoki saqlash uchun qo'ng'iroqlarni bajarishdan oldin bajarish.

Ikkinchi qadam: Sozlamalarni ma'lumotlar bazasiga saqlash

funktsiya setSetting (nom, qiymat)
sql = "Sozlamalardan o'chirish WHERE name = '" .. name .. "';
JB: exec (sql)

SQL = "INSERT INTO sozlamalari (ism, qiymat) VALUES ('" ..name .. "," .. value .. ");";
JB: exec (sql)
oxiri

funktsiya setSettingString (nom, qiymat)
setSetting (nomi, "" .. qiymat .. "" "));
oxiri

SetSetting funktsiyasi jadvalga saqlangan oldingi sozlamalarni o'chirib tashlaydi va yangi qiymatni qo'shadi. Ham tamsaytlar va satrlar bilan ishlaydi, lekin mag'lubiyatni saqlash qiymati atrofida bitta tirnoq talab qiladi, shuning uchun setSettingString vazifasini biz uchun qo'shimcha ishni bajarish uchun ishlatdik.

Uchinchi qadam: ma'lumotlar bazasidan sozlash

vazifa getSetting (name)

local sql = "SELECT * FROM Sozlamalari WHERE name = '" .. name .. "";
mahalliy qiymat = -1;

db: nrows (sql) satrini bajarish uchun
value = row.value;
oxiri

qaytish qiymati;
oxiri

funktsiya getSettingString (name)
local sql = "SELECT * FROM Sozlamalari WHERE name = '" .. name .. "";
mahalliy qiymat = '';

db: nrows (sql) satrini bajarish uchun
value = row.value;
oxiri

qaytish qiymati;
oxiri

Yuqorida aytib o'tilganidek, funksiyalarni ikkita versiyaga singdirdik: biri tamsayılar uchun, ikkinchisi esa satrlar uchun. Buning asosiy sababi agar ma'lumotlar bazasida hech qanday parametr mavjud bo'lmasa, ularni maxsus qiymatlar bilan belgilashimiz mumkin. GetSetting funktsiyasi -1 qiymatini qaytaradi, bu esa sozlamaning saqlanmaganligini bizga ma'lum qiladi. GetSettingString bo'sh satrni qaytaradi.

GetSettingString vazifasi to'liq ixtiyoriy. Ma'lumotlar bazasida hech narsa topilmasa, uni va normal getSetting funktsiyasi orasidagi yagona farq qaytariladi.

To'rtinchi qadam: bizning sozlamalar jadvalimizni ishlatish

Keling, juda ko'p ishlarni bajarishimiz kerak, biz mahalliylashtirilgan ma'lumotlar bazasiga osongina o'rnatishimiz va saqlashimiz mumkin. Misol uchun, biz quyidagi gap bilan ovozni o'chirib qo'yishimiz mumkin:

setSetting ("ovoz", noto'g'ri);

Ovozni ijro etish uchun global funktsiyani ishlatishimiz mumkin:

funktsiyasi playSound (audioID)
agar (getSetting ("sound")) bo'lsa
audio.play (audioID)
oxiri
oxiri

Ovozni qaytadan yoqish uchun biz faqat ovoz sozlamasini rost qilib qo'yamiz:

setSetting ("ovoz", haqiqiy);

Ushbu funktsiyalar haqida yaxshi ma'lumotni sozlash jadvalidagi satrlarni yoki tamsayılarni saqlashingiz va ularni osongina olishingiz mumkin. Bu o'zingizning yuqori ballingizni saqlash uchun o'yinchi nomini tejashga yordam beradi.

Corona SDK: Qanday Layer grafikalar, Grafiklarni ko'chirish va Grafikni old tomonga keltiring