Cara Memuatkan dan Simpan Data Permainan dalam SDK Corona

Bagaimana Menggunakan SQLite untuk Menyimpan Data dan Tetapan Permainan

Satu perkara yang hampir setiap aplikasi dan permainan mempunyai persamaan adalah keperluan untuk menyimpan dan mengambil data. Walaupun permainan yang paling mudah boleh menggunakan SQLite untuk menyimpan nombor versi aplikasinya, yang boleh digunakan untuk memastikan keserasian semasa melakukan peningkatan, atau tetapan mudah seperti memutar atau mematikan bunyi permainan.

Jika anda tidak pernah melakukan banyak kerja dengan pangkalan data atau menggunakan ciri pangkalan data dalam Corona SDK , jangan risau. Ia sebenarnya proses yang agak mudah terima kasih kepada kuasa LUA dan enjin pangkalan data SQLite yang digunakan dalam Corona SDK. Tutorial ini akan berjalan melalui proses membuat jadual tetapan dan menyimpan dan mendapatkan semula maklumat daripadanya. Bagaimana untuk membangunkan aplikasi iPad.

Juga perlu diingat bahawa teknik ini boleh melampaui menyimpan tetapan berasaskan pengguna. Sebagai contoh, bagaimana jika anda mempunyai permainan yang boleh dimainkan menggunakan mod permainan yang berbeza seperti mod "cerita" dan "arked". Jadual tetapan ini boleh digunakan untuk menyimpan mod semasa. Atau apa-apa data lain yang anda mahu tetap berterusan walaupun pengguna berhenti dari permainan dan melancarkannya semula.

Langkah Pertama: Mulakan kemasukan pangkalan data dan buat jadual tetapan

Perkara pertama yang perlu kita lakukan ialah mengisytiharkan perpustakaan SQLite dan memberitahu apl kami di mana untuk mencari fail pangkalan data. Tempat terbaik untuk meletakkan kod ini adalah betul di bahagian atas fail utama.lua bersama-sama dengan yang lain memerlukan kenyataan. Fail pangkalan data akan dibuat jika tiada dijumpai, dan kami akan menyimpannya dalam folder Dokumen supaya kami dapat membaca dan menulis kepadanya.

memerlukan "sqlite3"
data_path tempatan = system.pathForFile ("data.db", system.DocumentsDirectory);
db = sqlite3.open (data_path);

Perhatikan bagaimana pemboleh ubah "db" tidak disetempatkan. Kami telah melakukan ini untuk memastikan kami dapat mengakses pangkalan data sepanjang projek kami. Anda juga boleh membuat fail .lua khusus untuk semua fungsi pangkalan data dan menyimpan pangkalan data setempat kepada fail tersebut.

Seterusnya, kami perlu membuat jadual pangkalan data yang akan menyimpan tetapan kami:

sql = "CREATE TABLE" JIKA TIDAK MENJADI tetapan (nama, nilai); "
db: exec (sql);

Kenyataan ini mewujudkan jadual tetapan kami. Tidak apa-apa untuk menjalankannya setiap kali aplikasi dimuatkan kerana jika jadual sudah ada, pernyataan ini tidak akan dilakukan. Anda boleh meletakkan kenyataan ini tepat di mana kami telah mengisytiharkan pangkalan data atau dalam fungsi yang menubuhkan aplikasi anda untuk dijalankan. Keperluan utama adalah (1) untuk melaksanakan kenyataan itu setiap kali aplikasi dilancarkan dan (2) laksanakan sebelum sebarang panggilan untuk memuat atau simpan tetapan.

Langkah Dua: Menyimpan tetapan ke pangkalan data

set fungsi (nama, nilai)
sql = "DELETE DARI tetapan di mana nama = '" .. nama .. "'";
db: exec (sql)

sql = "INSERT INTO settings (name, value) VALUES ('" ..name .. "'," .. value .. ");";
db: exec (sql)
akhir

setSettingString fungsi (nama, nilai)
setSetting (nama, "'" .. value .. "'");
akhir

Fungsi setSetting akan memadamkan sebarang tetapan sebelumnya yang disimpan pada jadual dan memasukkan nilai baru kami. Ia akan berfungsi dengan kedua-dua bilangan bulat dan rentetan, tetapi menyimpan rentetan memerlukan sebut harga tunggal di sekitar nilai, jadi kami telah menggunakan fungsi setSettingString untuk melakukan sedikit kerja tambahan untuk kami.

Langkah Tiga: Memuatkan tetapan dari pangkalan data

fungsi getSetting (nama)

local sql = "SELECT * FROM settings WHERE name = '" .. name .. "'";
nilai setempat = -1;

untuk baris dalam db: nop (sql) lakukan
nilai = row.value;
akhir

nilai pulangan;
akhir

fungsi getSettingString (nama)
local sql = "SELECT * FROM settings WHERE name = '" .. name .. "'";
nilai setempat = '';

untuk baris dalam db: nop (sql) lakukan
nilai = row.value;
akhir

nilai pulangan;
akhir

Seperti di atas, kami telah memecahkan fungsi menjadi dua versi: satu untuk bilangan bulat dan satu untuk rentetan. Alasan utama yang kami lakukan ini adalah supaya kami dapat menginisialisasinya dengan nilai tertentu jika tiada tetapan dalam pangkalan data. Fungsi getSetting akan mengembalikan -1, yang akan memberitahu kami bahawa tetapan itu belum disimpan. GetSettingString akan mengembalikan rentetan kosong.

Fungsi getSettingString adalah sepenuhnya pilihan. Satu-satunya perbezaan di antaranya dan fungsi getSetting biasa adalah apa yang dikembalikan jika tiada apa yang terdapat dalam pangkalan data.

Langkah Empat: Menggunakan jadual tetapan kami

Sekarang bahawa kami telah melakukan kerja keras, kami dapat memuat dan menyimpan tetapan dengan mudah ke pangkalan data tempatan. Sebagai contoh, kita boleh membisukan bunyi dengan pernyataan berikut:

setSetting ('bunyi', palsu);

Dan kita boleh menggunakan tetapan dalam fungsi global untuk bermain bunyi:

fungsi playSound (soundID)
jika (getSetting ('bunyi') kemudiannya
audio.play (soundID)
akhir
akhir

Untuk menghidupkan semula bunyi, kami hanya menetapkan tetapan bunyi menjadi benar:

setSetting ('bunyi', benar);

Bahagian yang bagus tentang fungsi ini ialah anda boleh menyimpan rentetan atau bilangan bulat ke meja tetapan dan mengambilnya dengan mudah. Ini membolehkan anda melakukan apa sahaja daripada menyimpan nama pemain untuk menyimpan skor tinggi mereka.

Corona SDK: Bagaimana Layer Graphics, Move Graphics dan Bring Graphics to Front