Lua 5.2.1 - 编辑并保存文件中的变量

时间:2013-09-25 17:16:49

标签: file variables lua

我有一个文件,它是我正在制作的游戏的一部分,我试图用代码操纵它。

这是文件:

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

但它不会那样,我知道为什么。我没有告诉程序编辑文件,我告诉它编辑该程序实例中的变量。我正在对文件做的只是打开然后关闭它。

你们中的任何人都知道这样做的方法吗?

谢谢,

  • 布伦丹

2 个答案:

答案 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()