Una cosa que gairebé totes les aplicacions i jocs té en comú és la necessitat d'emmagatzemar i recuperar dades. Fins i tot el joc més senzill pot utilitzar SQLite per guardar el número de versió de l'aplicació, que es pot utilitzar per assegurar la compatibilitat quan es realitzen actualitzacions o configuracions senzilles com ara activar o desactivar el so del joc.
Si mai heu fet molt treball amb bases de dades o ha utilitzat les funcions de la base de dades del Corona SDK, no us preocupeu. En realitat, és un procés relativament senzill gràcies al poder de LUA i del motor de base de dades SQLite utilitzat en el Corona SDK. Aquest tutorial recorrerà el procés de creació d'una taula de configuració i tant d'emmagatzematge com de recuperació d'informació.
Tingueu en compte que aquesta tècnica pot anar més enllà d'emmagatzemar la configuració basada en l'usuari. Per exemple, què passa si teniu un joc que es pot jugar amb diferents modes de joc, com ara el mode "història" i el "arcade". Aquesta taula de configuració es pot utilitzar per emmagatzemar el mode actual. Qualsevol altra informació que vulguis seguir sent persistent encara que l'usuari deixi de jugar i torneu a iniciar.
S'està inicialitzant la base de dades i es crea la taula de configuració.
El primer que hem de fer és declarar la biblioteca SQLite i dir-li a la nostra aplicació on trobar el fitxer de la base de dades. El millor lloc per posar aquest codi es troba a la part superior de l'arxiu main.lua juntament amb les altres instruccions necessàries. El fitxer de base de dades es crearà si no es troba cap, i l'emmagatzemarem a la carpeta de Documents perquè puguem llegir-lo i escriure-hi.
requereix "sqlite3" local data_path = system.pathForFile ("data.db", system.DocumentsDirectory); db = sqlite3.open (ruta de dades);
Tingueu en compte que la variable "db" no està localitzada. Ho hem fet per assegurar-nos que puguem accedir a la base de dades al llarg de tot el nostre projecte. També podeu crear un fitxer .lua específic per a totes les funcions de la base de dades i mantenir la base de dades localitzada en aquest fitxer.
A continuació, necessitem crear la taula de la base de dades que emmagatzemarà la nostra configuració:
local sql = "CREATE TABLE IF NOT EXISTS settings (name, value);" db: exec (sql);
Aquesta afirmació crea la nostra taula de configuració. Està bé executar-lo cada cop que es carregui l'aplicació perquè si ja existeix la taula, aquesta afirmació no farà res. Podeu fer aquesta declaració directament sota on hàgim declarat la base de dades o la funció que estableix que s'executi l'aplicació. El requisit principal és (1) executar aquestes declaracions cada vegada que s'inicia l'aplicació i (2) executar-la abans de qualsevol trucada per carregar o guardar la configuració.
S'està desant la configuració a la base de dades.
funció setSetting (nom, valor) sql = "DELETE FROM settings WHERE name = '" .. name .. "'"; db: exec (sql) sql = "INSERT INTO settings (nom, valor) VALORS ('" ..name … "'," .. value … ");"; db: exec (sql) end
funció setSettingString (nom, valor) setSetting (name, "" ".. value …" '"); end
La funció de configuració elimina qualsevol configuració anterior desada a la taula i insereix el nostre nou valor. Funcionarà amb els enters i les cadenes, però guardar una cadena requereix cites simples al voltant del valor, de manera que hem utilitzat la funció setSettingString per fer aquest treball extra per a nosaltres.
S'està carregant la configuració de la base de dades.
funció getSetting (nom)
local sql = "SELECT * FROM configuració WHERE name = '" .. name .. "'"; valor local = -1;
per a la fila a db: nrows (sql) do value = row.value; final
valor retornat; final
function getSettingString (name) local sql = "SELECT * FROM settings WHERE name = '" … name .. "'"; valor local = '';
per a la fila a db: nrows (sql) do value = row.value; final
valor retornat; final
Com anteriorment, hem trencat les funcions en dues versions: una per a enters i una per a cadenes. La raó principal per la qual hem fet això és que podem inicialitzar-los amb valors específics si no hi ha cap configuració a la base de dades. La funció getSetting retornarà un -1, que ens farà saber que la configuració no s'ha desat. The getSettingString retornarà una cadena en blanc.
La funció getSettingString és completament opcional. L'única diferència entre ella i la funció getSetting normal és el que es torna si no hi ha res a la base de dades.
Ús de la taula de configuració.
Ara que tenim el treball dur, podem carregar i guardar fàcilment la configuració a una base de dades localitzada. Per exemple, podríem silenciar el so amb la següent afirmació:
setSetting ('so', false);
I podríem utilitzar la configuració en una funció global per reproduir sons:
funció playSound (soundID) si (getSetting ('so')) i endavant audio.play (soundID) endend
Per activar el so de nou, només hem de configurar la configuració de so a true:
setSetting ('so', true);
La bona part d'aquestes funcions és que podeu guardar cadenes o sencers a la taula de configuració i recuperar-los fàcilment. Això us permet fer qualsevol cosa des de guardar el nom d'un jugador per desar la puntuació més alta.













