Loadsave 模块 - Corona SDK

Loadsave module - Corona SDK

我正在为我的 Corona SDK 游戏使用 Rob Miracle 的加载保存模块

我有这个小询盘

如果我在 mydata.lua

上保存 json table
M={}
M.highScore = 0
M.levels=1

loadsave.saveTable(M,"settings.json")

return M

现在如果在 game.lua...我这样做....

function gameOver
    If gamewin == false then
    mydata.level = mydata.level + 1

gamewin = true

loadsave.saveTable(mydata,"settings.json")

end

现在,如果我这样做,loadsave 模块会覆盖整个 json 文件,从而从那里删除高分参数吗?

请帮忙

是的。来自 the sourcesaveTable 定义:

function saveTable(t, filename)
    local path = system.pathForFile( filename, system.DocumentsDirectory)
    local file = io.open(path, "w")
    if file then
        local contents = json.encode(t)
        file:write( contents )
        io.close( file )
        return true
    else
        return false
    end
end

如您所见,该函数使用 io.open(path, "w") 写入文件。因为,io.open 在与写入模式(w 参数)一起使用时会创建一个全新的文件,旧文件将被覆盖。

您可以先从 json 文件加载内容,然后再用新值覆盖:

function gameOver()
    local mydata = loadsave.loadTable "settings.json"
    if gamewin == false then
        mydata.level = mydata.level + 1
        gamewin = true
    .
    .
    .
    loadsave.saveTable(mydata,"settings.json")
end