2013-05-13 7 views
5

ich diese Methode bin mit Einstellungen für mein SpielSo erstellen und speichern Sie Einstellungen in 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/

Wann sollte ich saveTabel und loadTable

verwenden speichern Wenn ich saveTable verwenden, wenn die Anwendung startet es den Standard valeus der Tabelle speichert, aber wie kann ich den zuletzt gespeicherten valeus laden wenn die app neu startet?

Kann ich (wenn) prüfen, ob die Datei existiert oder nicht?

Einige helfen bitte

Vielen Dank im Voraus!

Antwort

4

Sie sollten die Datei mit Standardwerten laden und wenn die Datei nicht existiert, sollten Sie sie erstellen. und jedes Mal, wenn Sie diesen Wert ändern, speichern Sie den Wert in der Datei.

folgenden Code können Sie helfen:

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 

einfach diese Funktionen zum Laden aufrufen und die Daten zu speichern. Und es wird einfacher sein, wenn Sie diese Funktionen in einer anderen Datei codieren und jedes Mal beim Laden und Speichern nur diese Datei benötigen und diese Funktionen verwenden.

7

Sie können dies in Ihrem main.lua verwenden:

--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 

Nun, wenn Sie ein paar neue Daten, um Ihre Einstellungen speichern möchten:

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

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

Und zu sparen Die geänderten Einstellungen verwenden:

saveTable(myGameSettings, "mygamesettings.json") 

Sie können die Einstellungen jedes Mal speichern, wenn Sie Daten ändern, oder Sie können Ihre Einstellungen nur einmal speichern: wenn der Benutzer auf die Schaltfläche zum Beenden des Spiels klickt.

+0

Danke für die Hilfe – Beri

+1

es ist nicht lua ... – Bnhjhvbq7

+0

Aktualisiert den Code zu Lua und fügte die require ('Einstellungen') Zeile, vorausgesetzt, die LoadTable/saveTable-Funktionen sind in settings.lua – Rebs

1

Im Allgemeinen müssen Sie nur Ihre Einstellungen laden, wenn die App gestartet wird. Danach ist die Tabelle im Speicher und Sie müssen nur die Tabelle speichern, wenn Sie Änderungen vornehmen, die Sie benötigen, um einen App-Neustart zu überstehen.