Una cosa che quasi ogni app e gioco ha in comune è la necessità di archiviare e recuperare i dati. Anche il gioco più semplice può utilizzare SQLite per salvare il numero di versione dell'app, che può essere utilizzato per garantire la compatibilità durante gli aggiornamenti o semplici impostazioni come l'attivazione o la disattivazione dell'audio del gioco.
Se non hai mai lavorato molto con i database o utilizzato le funzionalità del database nell'SDK Corona, non preoccuparti. In realtà è un processo relativamente semplice grazie alla potenza di LUA e del motore di database SQLite utilizzato nell'SDK Corona. Questo tutorial illustrerà il processo di creazione di una tabella delle impostazioni e di memorizzare e recuperare informazioni da esso.
Tieni presente che questa tecnica può andare oltre la memorizzazione delle impostazioni basate sull'utente. Ad esempio, cosa succede se hai un gioco che può essere giocato utilizzando diverse modalità di gioco come la modalità "storia" e la modalità "arcade". Questa tabella delle impostazioni può essere utilizzata per memorizzare la modalità corrente. Qualsiasi altro dato che si desidera mantenere persistente anche se l'utente esce dal gioco e lo riavvia.
Inizializzazione del database e creazione della tabella delle impostazioni.
La prima cosa che dobbiamo fare è dichiarare la libreria SQLite e dire alla nostra app dove trovare il file del database. Il posto migliore per mettere questo codice è proprio nella parte superiore del file main.lua insieme alle altre istruzioni require. Il file di database verrà creato se non ne viene trovato nessuno, e lo memorizzeremo nella cartella Documenti in modo che possiamo leggere da esso e scrivere su di esso.
richiede "sqlite3" local data_path = system.pathForFile ("data.db", system.DocumentsDirectory); db = sqlite3.open (data_path);
Si noti come la variabile "db" non è localizzata. Lo abbiamo fatto per assicurarci di poter accedere al database durante tutto il nostro progetto. È inoltre possibile creare un file .lua specifico per tutte le funzioni del database e mantenere il database localizzato su quel file.
Successivamente, abbiamo bisogno di creare la tabella del database che memorizzerà le nostre impostazioni:
sql locale "CREATE TABLE SE NON ESISTA le impostazioni (nome, valore);" db: exec (sql);
Questa dichiarazione crea la nostra tabella delle impostazioni. Va bene eseguirlo ogni volta che l'app viene caricata perché se la tabella esiste già, questa istruzione non farà nulla. Puoi mettere questa dichiarazione proprio sotto dove abbiamo dichiarato il database o nella funzione che imposta la tua app per l'esecuzione. Il requisito principale è (1) di eseguire tali dichiarazioni ogni volta che l'app viene avviata e (2) eseguirla prima di qualsiasi chiamata per caricare o salvare le impostazioni.
Salvataggio delle impostazioni nel database.
function setSetting (name, value) sql = "DELETE FROM settings WHERE name = '" .. name .. "'"; db: exec (sql) sql = "INSERT INTO impostazioni (nome, valore) VALUES ('" ..name .. "'," .. value .. ");"; db: exec (sql) end
function setSettingString (name, value) setSetting (nome, "'" .. valore .. "'"); fine
La funzione di impostazione cancella tutte le impostazioni precedenti salvate nella tabella e inserisce il nostro nuovo valore. Funzionerà sia con gli interi che con le stringhe, ma il salvataggio di una stringa richiede virgolette singole attorno al valore, quindi abbiamo utilizzato la funzione setSettingString per fare un po 'di lavoro in più per noi.
Caricamento delle impostazioni dal database.
funzione getSetting (nome)
sql locale = "SELECT * FROM settings WHERE name = '" .. name .. "'"; valore locale = -1;
per riga in db: nrows (sql) do value = row.value; fine
valore di ritorno, fine
function getSettingString (name) local sql = "SELECT * FROM settings WHERE name = '" .. name .. "'"; valore locale = '';
per riga in db: nrows (sql) do value = row.value; fine
valore di ritorno, fine
Come sopra, abbiamo suddiviso le funzioni in due versioni: una per i numeri interi e una per le stringhe. Il motivo principale per cui lo abbiamo fatto è che possiamo inizializzarli con valori specifici se non esiste alcuna impostazione nel database. La funzione getSetting restituirà -1, che ci farà sapere che l'impostazione non è stata salvata. GetSettingString restituirà una stringa vuota.
La funzione getSettingString è completamente facoltativa. L'unica differenza tra questa e la normale funzione getSetting è ciò che viene restituito se non viene trovato nulla nel database.
Utilizzando la nostra tabella delle impostazioni.
Ora che abbiamo fatto il duro lavoro, possiamo facilmente caricare e salvare le impostazioni su un database localizzato. Ad esempio, potremmo silenziare il suono con la seguente dichiarazione:
setSetting ( 'suono', false);
E potremmo utilizzare l'impostazione in una funzione globale per la riproduzione di suoni:
function playSound (soundID) if (getSetting ('sound')) quindi audio.play (soundID) endend
Per riattivare l'audio, impostiamo semplicemente l'impostazione audio su true:
setSetting ( 'suono', true);
La parte interessante di queste funzioni è che puoi salvare stringhe o interi nella tabella delle impostazioni e recuperarle facilmente. Ciò ti consente di fare qualsiasi cosa, dal salvataggio del nome di un giocatore al salvataggio del punteggio più alto.




