如何在 LUA 中创建一个表格,它的值由 "for" 循环的输出定义?

我正在为魔兽世界编写一个插件,但我遇到了一些基本的 lua 问题。我想要将这个 for 循环中的以下元素减少到一行中。

目前,我正在使用 WoW 的 api 命令 "SetAlpha(0)"(它只是隐藏游戏中的框架)在共享相同名称的框架列表上,除了末尾的数字。ActionButton1Name,ActionButton2Name,ActionButton3Name 等。

我还必须对另外四个列表执行相同的操作,每个列表也有 12 个不同的版本 MultiBarBottomRightButton1Name,MultiBarBottomRightButton2Name 等。

实质上,我希望采取当前的内容:

for i=1, 12 do
    [ "ActionButton"..i.."Name" ]:SetAlpha(0)
    [ "MultiBarBottomRightButton" ..i.. "Name" ]:SetAlpha(0)
    [ "MultiBarBottomLeftButton" ..i.. "Name" ]:SetAlpha(0)
    [ "MultiBarRightButton" ..i.. "Name" ]:SetAlpha(0)
    [ "MultiBarLeftButton" .. i.. "Name" ]:SetAlpha(0)
end

_SetAlpha 是特定于魔兽世界 API 的,因此根据需要忽略它。

将它转换成我在其他地方有所有 [ ] 元素的一个表格,并稍后使用该索引

local buttonNameIndex = function()
    for i=1, 12 do
        [ "ActionButton"..i.."Name" ]
        [ "MultiBarBottomRightButton"..i.."Name" ]
        [ "MultiBarBottomLeftButton"..i.."Name" ]
        [ "MultiBarRightButton"..i.."Name" ]
        [ "MultiBarLeftButton"..i.."Name" ]
    end
end

for i,v in ipairs(buttonNameIndex) do
v:SetAlpha(0) end

然而,上述函数似乎没有起作用,在第二行的 do 附近的终端上输出了一个错误。

为什么要这样做:我将在以后对那个框架列表进行更多的操作,因此将它们都合并到单个表中将是很好的一个选择。

点赞
用户107090
用户107090

如果这些是全局变量,请使用如下表达式:

_G["ActionButton"..i.."Name"]:SetAlpha(0)

该表达式可以从动态创建的名称访问全局变量。

2017-07-01 15:19:39