Corona SDK'da Oyun Verileri Nasıl Yüklenir ve Kaydedilir

Oyun Verilerini ve Ayarları Saklamak için SQLite Nasıl Kullanılır

Hemen hemen her uygulama ve oyunda ortak olan bir şey veri saklama ve alma ihtiyacıdır. En basit oyun bile, yükseltmeleri gerçekleştirirken uyumluluğun sağlanması için kullanılabilen uygulama sürüm numarasını veya oyunun sesini açma veya kapama gibi basit ayarları kaydetmek için SQLit'i kullanabilir.

Veritabanlarıyla hiç çalışmadıysanız veya Corona SDK'sinde veritabanı özelliklerini kullanmamışsanız endişelenmeyin. Aslında, LUA'nın gücü ve Corona SDK'sında kullanılan SQLite veritabanı motoru sayesinde nispeten basit bir süreç. Bu eğitici, bir ayar tablosu oluşturma ve hem bilgi depolamayı hem de bu bilgileri alma işlemlerini gerçekleştirecektir. IPad uygulamaları nasıl geliştirilir?

Ayrıca, bu tekniğin kullanıcı tabanlı ayarları depolamanın ötesine geçebileceğini unutmayın. Örneğin, "hikaye" modu ve "arcade" modu gibi farklı oyun modları kullanılarak oynanabilen bir oyun varsa ne olur? Bu ayarlar tablosu mevcut modu saklamak için kullanılabilir. Ya da kullanıcı oyundan çıkarsa ve yeniden başlatsa bile, kalıcı kalmak istediğiniz herhangi bir veri parçası.

Adım Bir: Veritabanını başlatma ve ayar tablosunu oluşturma

Yapmamız gereken ilk şey, SQLite kütüphanesini bildirmek ve uygulama dosyamıza veritabanı dosyasını nerede bulacağımızı söylemek. Bu kodu koymak için en iyi yer, main.lua dosyasının en üstünde, diğer gereksinim ifadeleriyle birlikte doğrudur. Hiçbiri bulunmazsa veritabanı dosyası oluşturulacak ve bizden okuyabildiğimiz ve yazabilmemiz için bunu Dokümanlar klasöründe saklayacağız.

"sqlite3" gerektiriyor
local data_path = system.pathForFile ("data.db", system.DocumentsDirectory);
db = sqlite3.open (data_path);

"Db" değişkeninin yerelleştirilmediğine dikkat edin. Projemiz boyunca veritabanına erişebildiğimizden emin olmak için bunu yaptık. Ayrıca, tüm veritabanı işlevleri için belirli bir .lua dosyası oluşturabilir ve veritabanını bu dosyaya yerel olarak saklayabilirsiniz.

Ardından, ayarlarımızı saklayacak veritabanı tablosunu oluşturmamız gerekiyor:

local sql = "OLMADIĞINIZDA TABLO OLUŞTURUN (isim, değer);"
db: exec (SQL);

Bu ifade, ayar tablolarımızı oluşturur. Uygulamanın yüklendiği her defasında çalıştırılmayabilir çünkü eğer tablo zaten mevcutsa, bu ifade hiçbir şey yapmayacaktır. Bu bildirimi, veritabanını belirttiğimiz yerde veya uygulamanızı çalıştıracak şekilde ayarlayan işlev kapsamında doğrudan belirtebilirsiniz. Temel gereksinim, (1) uygulamanın başlatıldığı her defasında bu ifadeleri yürütmek ve (2) ayarları yüklemek veya kaydetmek için yapılan çağrılardan önce yürütmektir.

İkinci Adım: Ayarları veritabanına kaydetme

fonksiyon setSetting (isim, değer)
sql = "REFERANSLARINDAN SİLME WHERE name = '" .. name .. "'";
db: exec (sql)

sql = "INSERT INTO ayarları (isim, değer) DEĞERLER ('" .. isim .. "'," .. değer .. ");";
db: exec (sql)
son

function setSettingString (isim, değer)
(Ad, " '" .. değeri .. "'") setSetting;
son

SetSetting işlevi, masaya kaydedilmiş önceki ayarları siler ve yeni değerlerimizi ekler. Hem tamsayılarla hem de dizelerle çalışacak, ancak bir dize kaydetme değerin etrafında tek tırnak işareti gerektirdiğinden, setSettingString işlevini bizim için fazladan bir iş yapmak için kullandık.

Üçüncü Adım: Veritabanından ayarları yükleme

işlev getSetting (isim)

local sql = "SELECT * FROM ayarlarında WHERE name = '" .. name .. "'";
yerel değer = -1;

db satır için: atlar (sql) yapmak
değeri = row.value;
son

geri dönüş değeri;
son

getSettingString işlevi (ad)
local sql = "SELECT * FROM ayarlarında WHERE name = '" .. name .. "'";
yerel değer = '';

db satır için: atlar (sql) yapmak
değeri = row.value;
son

geri dönüş değeri;
son

Yukarıdaki gibi, işlevleri iki versiyona ayırdık: bir tam sayı için ve bir tanesi dizgiler için. Bunu yapmamızın temel nedeni, veritabanında hiçbir ayar yoksa bunları belirli değerlerle başlatabilmemizdir. GetSetting işlevi -1 değerini döndürecek ve bu da ayarın kaydedilmediğini bize bildirecektir. GetSettingString boş bir dize döndürecektir.

GetSettingString işlevi tamamen isteğe bağlıdır. Normal getSetting işleviyle arasındaki tek fark, veritabanında hiçbir şey bulunmazsa döndürülen şeydir.

Dördüncü Adım: Ayarlar tablomuzu kullanma

Artık sıkı çalışmamız var, ayarları yerel bir veritabanına kolayca yükleyebilir ve kaydedebiliriz. Örneğin, sesi şu ifadeyle kapatabiliriz:

setSetting ( 'ses' yanlış);

Ve sesleri oynamak için bu ayarı global bir fonksiyonda kullanabiliriz:

işlev playSound (soundID)
eğer (getSetting ('sound')) ise
audio.play (soundID)
son
son

Sesi tekrar açmak için ses ayarını doğru olarak ayarlamanız yeterlidir:

setSetting ( 'ses' doğru);

Bu işlevlerle ilgili güzel bölüm, dizeleri veya tam sayıları ayarlar tablosuna kaydedip kolayca alabilmenizdir. Bu, oyuncunun isminden yüksek puanlarını kaydetmek için herhangi bir şey yapmanıza izin verir.

Corona SDK: Grafikler Nasıl Çizilir, Grafikleri Taşıyın ve Grafikleri Öne Getirin