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

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

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

谢谢,

  • 布伦丹
4

2 回答 2

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

于 2013-09-25T17:22:08.317 回答
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()
于 2013-09-25T17:24:49.863 回答