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

我有一个文件,是我正在制作的游戏的一部分,我正在尝试使用代码对其进行操作。

这是文件的内容:

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

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

你们中的任何人知道如何做到这一点吗?

谢谢,

  • Brendan
点赞
用户961810
用户961810

我的建议是使用已经为此设计好的工具。以下是一个示例:https://github.com/2ion/ini.lua。这将允许您读取数据,根据需要进行更改,然后将其写回。

EDIT: 这个工具有一个依赖关系:https://github.com/stevedonovan/Penlight/blob/master/lua/pl/path.lua

也可以尝试使用 inih(虽然它是用 C 写的,因此集成需要更多的知识):http://luarocks.org/repositories/rocks/#lua-inih

2013-09-25 17:22:08
用户2810616
用户2810616

这将每次重写整个文件,效率不高,但可行。考虑使用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()
2013-09-25 17:24:49