使用Lua对XML对象进行索引

我现在有一堆类似于

<Texture name="uiBox01">
    *其他内容*
</Texture>

的盒子,一共有18个盒子(uiBox01到uiBox18)。在Lua中,我能够通过以下方式引用并改变它的颜色

uiBox01:SetVertexColor(r,g,b)

问题是对于一个操作,我可能需要更多或更少的盒子。对于第一个操作,可能只需要两个盒子,而对于下一个操作可能需要八个盒子。因此,它需要是动态的而不是静态的。

最终我想使用Lua数组

uiBox[1] = uiBox01 --类似这个

这样我可以更有效地指定下一个索引。非常感谢您的帮助!

编辑:使用的XML是魔兽世界UI XML,它与基本的XML非常相似。

点赞
用户1548504
用户1548504

我不确定我是否正确理解了你的问题。我假设你想做的是能够使用数组中的索引来引用一个盒子,而不是一个变量名。

i=5  -- 从某个地方设置,可能是循环
-- 一段时间后
myBox = boxes[i]

我不熟悉魔兽世界,但我认为 uiBox01 是由魔兽世界某种方式创建的全局变量。

在 Lua 中,全局变量存储在 _G 数组中,索引为变量的名称。所以

uiBox01 == _G['uiBox01']  -- 返回 true

所以以下代码对你应该有效

i=5  -- 从某个地方设置,可能是循环
-- 一段时间后
myBox = _G['uiBox'..i]

扩展它以处理如果 i 是一个单个数字则在前面加零

i=5  -- 从某个地方设置,可能是循环
-- 一段时间后
myBox = _G['uiBox'.. (i < 10 and '0' or '' ) .. i] -- 在中间连接零如果i<10

如果你还在寻找其他的解决方案,请告诉我。

2013-09-12 06:30:51