After that, we can use file:read() to retrieve them.
However, the game setting data are recorded in table format in most cases.
The functions file:write() and file:read() are both accepted string type as the input/output.
We need to use json to encode table into string and decode string into table, as shown below:
local json = require("json") function saveTable(myTable, filename) local path = system.pathForFile( filename, system.DocumentsDirectory) local file = io.open(path, "w") if file then local sTable = json.encode(myTable)--encode the table to string file:write( sTable ) io.close( file ) return true else return false end end function loadTable(filename) local path = system.pathForFile( filename, system.DocumentsDirectory) local contents = "" local myTable = {} local file = io.open( path, "r" ) if file then local sTable = file:read( "*a" )-- read the entire contents of the file myTable = json.decode(sTable)--decode the string back to table io.close( file ) file = nil return myTable end return nil end
Next, how to use the above functions in our codes?
gameSettingsFileName = "mygamesettings.json" currentSettingsVersion = 3 myGameSettings = loadTable("mygamesettings.json") if(myGameSettings == nil or myGameSettings.version == nil or myGameSettings.version ~= currentSettingsVersion) then -- the default settings myGameSettings = {} myGameSettings.version = currentSettingsVersion myGameSettings.level = 2 myGameSettings.speed = 5 saveTable(myGameSettings, gameSettingsFileName) end myGameSettings.level = myGameSettings.level+1 saveTable(myGameSettings, gameSettingsFileName)
沒有留言:
張貼留言