Com carregar i guardar dades del joc al SDK de Corona

Com s'utilitza SQLite per emmagatzemar dades i paràmetres del joc

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ó. Com desenvolupar aplicacions per a iPad.

Tingueu en compte que aquesta tècnica pot anar més enllà d'emmagatzemar configuracions basades 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. O qualsevol altra informació que vulgueu mantenir persistent, fins i tot si l'usuari no surt del joc i torna a iniciar-lo.

Pas 1: inicialització de la base de dades i creació de 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.

necessiteu "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 NO EXISTEN configuració (nom, valor);"
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ó.

Pas dos: guardar 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)
final

funció setSettingString (nom, valor)
setSetting (name, "" ".. value ..." '");
final

La funció set Set setting 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.

Pas 3: carrega 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 en db: nrows (sql)
value = row.value;
final

valor retornat;
final

funció getSettingString (nom)
local sql = "SELECT * FROM configuració WHERE name = '" .. name .. "'";
valor local = '';

per a la fila en db: nrows (sql)
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.

Pas quatre: utilitzant la nostra 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)
if (getSetting ('sound')) then
audio.play (soundID)
final
final

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.

Corona SDK: Com amagar gràfics, moure gràfics i portar gràfics al front