Skip to main content

Jak załadować i zapisać dane gry w Corona SDK (LUA / SQLite)

3000+ Common English Words with British Pronunciation (Lipiec 2026)

3000+ Common English Words with British Pronunciation (Lipiec 2026)
Anonim

Jedną z rzeczy, z którą prawie każda aplikacja i gra ma wspólną cechę, jest potrzeba przechowywania i pobierania danych. Nawet najprostsza gra może wykorzystać SQLite do zapisania numeru wersji aplikacji, który może być użyty w celu zapewnienia kompatybilności podczas przeprowadzania aktualizacji lub prostych ustawień, takich jak włączanie i wyłączanie dźwięku gry.

Jeśli nigdy nie robiłeś dużo pracy z bazami danych lub korzystałeś z funkcji bazy danych w Corona SDK, nie martw się. Jest to stosunkowo prosty proces dzięki mocy LUA i silnika bazy danych SQLite wykorzystywanego w Corona SDK. W tym samouczku omówiono proces tworzenia tabeli ustawień oraz przechowywania i pobierania z niej informacji.

Należy pamiętać, że ta technika może wykroczyć poza przechowywanie ustawień opartych na użytkowniku. Na przykład, jeśli masz grę, w którą można grać za pomocą różnych trybów gry, takich jak tryb "fabuły" i "zręczności". Ta tabela ustawień może służyć do przechowywania bieżącego trybu. Każda inna część danych, która ma pozostać trwała, nawet jeśli użytkownik opuści grę i ponownie ją uruchomi.

Inicjowanie bazy danych i tworzenie tabeli ustawień.

Pierwszą rzeczą, którą musimy zrobić, to zadeklarować bibliotekę SQLite i powiedzieć naszej aplikacji, gdzie można znaleźć plik bazy danych. Najlepsze miejsce do umieszczenia tego kodu znajduje się u góry pliku main.lua wraz z innymi instrukcjami wymagającymi. Plik bazy danych zostanie utworzony, jeśli nie zostanie znaleziony, a my przechowamy go w folderze Dokumenty, abyśmy mogli z niego odczytać i do niego napisać.

wymagają "sqlite3" local data_path = system.pathForFile ("data.db", system.DocumentsDirectory); db = sqlite3.open (data_path);

Zwróć uwagę, że zmienna "db" nie jest zlokalizowana. Zrobiliśmy to, aby upewnić się, że możemy uzyskać dostęp do bazy danych w całym naszym projekcie. Można także utworzyć określony plik .lua dla wszystkich funkcji bazy danych i zachować zlokalizowaną bazę danych w tym pliku.

Następnie musimy utworzyć tabelę bazy danych, która będzie przechowywać nasze ustawienia:

local sql = "STWÓRZ TABELĘ, JEŚLI NIE ZNAJDUJE ustawień (nazwa, wartość);" db: exec (sql);

Ta instrukcja tworzy naszą tabelę ustawień. Uruchomienie jej za każdym razem, gdy aplikacja się ładuje, jest w porządku, ponieważ jeśli tabela już istnieje, to ta instrukcja nic nie da. Możesz umieścić to stwierdzenie bezpośrednio w miejscu, w którym zadeklarowaliśmy bazę danych lub w funkcji, która uruchamia Twoją aplikację. Głównym wymaganiem jest (1) wykonanie tych instrukcji za każdym razem, gdy aplikacja jest uruchomiona i (2) wykonanie jej przed wywołaniem załadowania lub zapisania ustawień.

Zapisywanie ustawień w bazie danych.

function setSetting (name, value) sql = "USUŃ Z ustawień WHERE nazwa =" "… nazwa .." ""; db: exec (sql) sql = "INSERT INTO settings (name, value) VALUES (" "..name .." ', ".. value .."); "; db: exec (sql) end

function setSettingString (name, value) setSetting (name, "'" .. value .. "" ");

Funkcja ustawień usuwa wszelkie poprzednie ustawienia zapisane w tabeli i wstawia naszą nową wartość. Będzie działać zarówno z liczbami całkowitymi, jak i łańcuchami, ale zapisywanie ciągu wymaga pojedynczych cudzysłowów wokół wartości, więc użyliśmy funkcji setSettingString, aby wykonać dla nas dodatkową pracę.

Ładowanie ustawień z bazy danych.

funkcja getSetting (nazwa)

local sql = "WYBIERZ * Z ustawień WHERE nazwa =" "… nazwa .." ""; wartość lokalna = -1;

dla wiersza w db: nrows (sql) do value = row.value; koniec

zwracana wartość; koniec

function getSettingString (name) local sql = "WYBIERZ * Z ustawień WHERE nazwa = '" … nazwa .. "" "; wartość lokalna = '';

dla wiersza w db: nrows (sql) do value = row.value; koniec

zwracana wartość; koniec

Jak wyżej, podzieliliśmy funkcje na dwie wersje: jedną dla liczb całkowitych i jedną dla łańcuchów. Głównym powodem, dla którego to zrobiliśmy, jest możliwość zainicjowania ich za pomocą określonych wartości, jeśli w bazie danych nie ma żadnych ustawień. Funkcja getSetting zwróci wartość -1, co pozwoli nam stwierdzić, że ustawienie nie zostało zapisane. Metoda getSettingString zwróci pusty ciąg.

Funkcja getSettingString jest całkowicie opcjonalna. Jedyną różnicą między nim a normalną funkcją getSetting jest to, co jest zwracane, jeśli nic nie znajduje się w bazie danych.

Korzystanie z naszej tabeli ustawień.

Teraz, gdy wykonaliśmy ciężką pracę, możemy łatwo załadować i zapisać ustawienia w zlokalizowanej bazie danych. Na przykład możemy wyciszyć dźwięk za pomocą następującej instrukcji:

setSetting ("dźwięk", fałsz);

I możemy wykorzystać to ustawienie w globalnej funkcji odtwarzania dźwięków:

funkcja playSound (soundID), jeśli (getSetting ('sound')), a następnie sound.play (soundID), koniec

Aby ponownie włączyć dźwięk, po prostu ustawiamy dźwięk na true:

setSetting ("dźwięk", prawda);

Przyjemną częścią tych funkcji jest możliwość zapisania ciągów lub liczb całkowitych do tabeli ustawień i ich łatwe pobieranie. Dzięki temu możesz zrobić wszystko, od zapisania nazwy gracza po zapisanie swojego wysokiego wyniku.