我有一个文件,它是我正在制作的游戏的一部分,我试图用代码操纵它。
这是文件:
tech =
{
weaponstech = 1.5,
armortech = 1.8,
shieldstech = 2
}
我正在尝试打开像这样的文件
local file = io.open("tech")
然后尝试将变量'shieldstech'的值更改为2.2。
每次运行函数时,我都需要自动执行此操作。
我通常使用单个变量文件,例如:
v = 1
但这只是给我一个难以管理的文件的混乱。
现在我按照我编写技术文件的方式存储变量。
这是我用来编辑这些单变量文件的方式:
local file = io.open("file", "w")
file:write("v = "..var)
file.close()
但是在单行或代码中重写整个文件真的太多了,所以我只想更改并保存变量,如下所示:
local file = io.open("tech", "w")
shieldstech = 2.2
file:close()
但它不会那样,我知道为什么。我没有告诉程序编辑文件,我告诉它编辑该程序实例中的变量。我正在对文件做的只是打开然后关闭它。
你们中的任何人都知道这样做的方法吗?
谢谢,
答案 0 :(得分:2)
我的建议是使用专为此任务设计的东西。下面是一个示例:https://github.com/2ion/ini.lua这将允许您读入数据,根据需要对其进行尽可能多的更改,然后将其写回。
编辑:这依赖于此:https://github.com/stevedonovan/Penlight/blob/master/lua/pl/path.lua
可能想尝试inih(尽管它是用C编写的,所以集成需要更多的知识):http://luarocks.org/repositories/rocks/#lua-inih
答案 1 :(得分:0)
这将每次都重写整个文件,这不是很好,但它会起作用。考虑使用sqlite数据库。
local file = io.open("tech", "w")
file:write("tech = {")
for p,v in pairs(tech) do file:write(p .. " = " .. v .. "," ) end
file:write("}")
file:close()