Corona SDK 的新手,我正在尝试找出一种在模拟器上加载和保存文件(存储游戏数据)的方法。(我不想在真实设备上进行调试,并且每次都需要 15 秒才能看到变量的变化)。
我按照这里的教程进行操作:http: //www.coronalabs.com/blog/2011/08/03/tutorial-exploring-json-usage-in-corona/ 并且在stackoverflow上找不到任何已经解决了这个问题的东西.
现在我有以下代码用于读取和存储文件:
local readJSONFile = function( filename, base )
-- set default base dir if none specified
if not base then base = system.ResourceDirectory; end
-- create a file path for corona i/o
local path = system.pathForFile( filename, base )
-- will hold contents of file
local contents
-- io.open opens a file at path. returns nil if no file found
local file = io.open( path, "r" )
if file then
-- read all contents of file into a string
contents = file:read( "*a" )
io.close( file ) -- close the file after using it
end
return contents
end
local writeToFile = function( filename, content )
-- set default base dir if none specified
if not base then base = system.ResourceDirectory; end
-- create a file path for corona i/o
local path = system.pathForFile( filename, base )
-- io.open opens a file at path. returns nil if no file found
local file = io.open( path, "w" )
if file then
-- write all contents of file into a string
file:write( content )
io.close( file ) -- close the file after using it
end
end
它似乎有效,因为我将读取我的 JSON 文件,用不同的数据保存它,加载它,这似乎持续存在。但是,一旦我关闭我的 IDE,更改就消失了。此外,我系统(mac book pro)上的实际文件没有改变。
如果我做:
local json = require "json"
local wordsData = json.decode( readJSONFile( "trivia.txt" ) )
wordsData.someKey = "something different"
writeToFile("trivia.txt", json.encode( wordsData ) ) -- this only works temporarily
我正在阅读与我trivia.txt
在同一目录中的文件,main.lua
并尝试更改和加载某些内容。但是,上面的代码不会 trivia.txt
对我的 mac book pro 进行实际更改。
这样做的正确方法是什么?我需要存储游戏设置和游戏数据(这是一个琐事应用程序,我需要存储最多 50 个单词以及用户选择的答案)。我需要以这样一种方式存储数据,当我关闭我的 IDE 时,它会记住我写入文件的内容。
我的猜测是,当我加载我trivia.txt
的 IDE 时,它实际上是在查看我的 mac book pro 中的那个文件,每次我加载我的 IDE 时。但是当我第一次在我的模拟器上运行它时,它会trivia.txt
在一些临时文件夹中创建一个新文件夹(我不知道它在哪里)。然后如果我重新运行相同的代码,它将从那里开始读取。正确的?
任何帮助将非常感激!!!赞成更详细的答案,因为我是 Corona SDK 的新手