2013-05-13 8 views
5

Używam tej metody, aby zapisać ustawienia dla mojej grzeJak tworzyć i zapisywać ustawienia w corona sdk?

http://omnigeek.robmiracle.com/2012/02/23/need-to-save-your-game-data-in-corona-sdk-check-out-this-little-bit-of-code/

Kiedy należy używać saveTabel i loadTable

Jeśli użyję saveTable gdy aplikacja rozpoczyna oszczędza domyślny valeus tabeli, ale jak mogę załadować ostatnio zapisany valeus, gdy aplikacja zacznie ponownie.

Czy mogę użyć (jeśli), aby sprawdzić, czy plik istnieje, czy nie?

Niektóre pomóc proszę

Dzięki z góry!

Odpowiedz

4

Powinieneś załadować plik z wartościami domyślnymi, a jeśli plik nie istnieje, powinieneś go utworzyć. i za każdym razem, gdy zmienisz tę wartość, zapisz wartość w pliku.

następujący kod może pomóc:

function load_settings() 
     local path = system.pathForFile("saveSettings.json", system.DocumentsDirectory) 
     local file = io.open(path, "r") 
     if file then 
      local saveData = file:read("*a") 
      io.close(file) 

      local jsonRead = json.decode(saveData) 
      value = jsonRead.value 

    else 
      value = 1 
    end end 

function save_settings() 
    local saveGame = {} 
    if value then 
    saveGame["value"] = value 
    end 

    local jsonSaveGame = json.encode(saveGame) 

    local path = system.pathForFile("saveSettings.json", system.DocumentsDirectory) 
    local file = io.open(path, "w") 
     file:write(jsonSaveGame) 
    io.close(file) 
    file = nil 
end 

Wystarczy zadzwonić te funkcje ładowania i zapisywania danych. I będzie łatwiej, jeśli zakodujesz te funkcje w różnych plikach i za każdym razem, gdy ładujesz i zapisujesz, po prostu wymagaj tego pliku i korzystaj z tych funkcji.

7

Można to wykorzystać w swojej main.lua:

--require the file with the save/load functions 
local settings = require("settings") 

myGameSettings = loadTable("mygamesettings.json") 

if myGameSettings == nil then 
    --There are no settings. This is first time the user launch your game 
    --Create the default settings 
    myGameSettings = {} 
    myGameSettings.highScore = 1000 
    myGameSettings.soundOn = true 
    myGameSettings.musicOff = true 
    myGameSettings.playerName = "Barney Rubble" 

    saveTable(myGameSettings, "mygamesettings.json") 
    print("Default settings created") 

end 

Teraz, jeśli chcesz zapisać nowe dane w ustawieniach:

--example: increment highScore by 50 
myGameSettings.highScore = myGameSettings.highScore + 50 

--example: change player name 
myGameSettings.playerName = "New player name" 

I zapisać zmodyfikowane ustawienia użycia:

saveTable(myGameSettings, "mygamesettings.json") 

Możesz zapisać ustawienia za każdym razem, gdy zmienisz niektóre dane lub możesz zapisać ustawienia tylko raz: gdy użytkownik dotknie przycisku zakończenia gry.

+0

Dziękujemy za pomoc – Beri

+1

to nie lua ... – Bnhjhvbq7

+0

Zaktualizował kod, by był Lua i dodał linię wymagającą ("ustawienia"), zakładając, że funkcje loadTable/saveTable znajdują się w settings.lua – Rebs

1

Zazwyczaj wystarczy załadować swoje ustawienia po uruchomieniu aplikacji. Następnie tabela znajduje się w pamięci i wystarczy zapisać tabelę po wprowadzeniu zmian niezbędnych do ponownego uruchomienia aplikacji.

Powiązane problemy