我将密钥存储在这样的表中:
d = { ["Rune_Test"] = "78100;Iconmisc0002", ["Sword_Test"] = "78097;Iconsword11" }
此表存储在我的ItemHandler.lua文件中。
local ItemHandler = {}
d = {}
function ItemHandler:LoadData(_data)
d = _data
end
function ItemHandler:GetData()
return d
end
function SaveItem(nId, Name, Sprite)
d[trim(string.gsub(Name, " ", "_"))] = nId .. ";" .. Sprite
end
我的主要lua文件是Central.lua,它看起来像这样:
function Central:OnRestore(eLevel, tData)
DataItems = tData.items or {}
ItemHandler:LoadData(tData.items or {})
end
function Central:OnSave(eLevel)
local tSave =
{
items = ItemHandler.GetData()
}
return tSave
end
我的xml保存文件目前如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<Document>
<N K="items" T="t">
<N K="Rune_Test" T="s" V="78100;Iconmisc0002"/>
<N K="Sword_Test" T="s" V="78097;Iconsword11"/>
</N>
我使用这样的函数来查找特定键:
function ItemHandler:CheckItem(iName)
if d[iName] ~= nil then
Print("Got it!")
end
end
我遇到的问题是我只得到xml文档中第一个键的匹配。
print(d.Rune_Test)
= 78100;Iconmisc0002
e
print(d.Sword_Test)
= nil
我想我只是错过了一些非常简单的事情。就LUA来说,我是一个很大的菜鸟,几天前就开始学习它了。 :)但我有C#知识所以它不是所有的jibbberish:P
答案 0 :(得分:1)
如果你跳过加载/保存的东西,它可以工作:
d = { ["Rune_Test"] = "78100;Iconmisc0002",
["Sword_Test"] = "78097;Iconsword11" }
print(d.Rune_Test)
print(d.Sword_Test)
打印:
78100;Iconmisc0002
78097;Iconsword11
因此,您从XML加载的内容并不是您认为的那样。
尝试在加载后打印表格,例如
for k, v in pairs (d) do
print ("key=", k, "value=", v)
end -- for
你应该看到:
key= Rune_Test value= 78100;Iconmisc0002
key= Sword_Test value= 78097;Iconsword11