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.
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. Sebarang data lain yang anda mahu kekal berterusan walaupun pengguna berhenti daripada permainan dan melancarkannya semula.
Memulakan pangkalan data dan mewujudkan 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 ADA 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.
Menyimpan tetapan ke pangkalan data.
fungsi setSetting (nama, nilai) sql = "DELETE FROM settings WHERE name = '" .. name .. "'"; db: exec (sql) sql = "INSERT INTO settings (name, value) VALUES ('" ..name .. "'," .. value .. ");"; db: akhir exec (sql)
fungsi setSettingString (nama, nilai) setSetting (nama, "'" .. nilai .. "'"); akhir
Fungsi penetapan menghapuskan sebarang tetapan sebelumnya yang disimpan di atas meja 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.
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; hujung
fungsi getSettingString (nama) sql tempatan = "SELECT * FROM settings WHERE name = '" .. name .. "'"; nilai setempat = '';
untuk baris dalam db: nop (sql) lakukan nilai = row.value; akhir
nilai pulangan; hujung
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.
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')) kemudian audio.play (soundID) endend
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.




