如何在lua中使用字符串作为变量名

请问,我在lua(love2d)中有以下代码:

nn = love.graphics.newImage'texture.png'

_1_1_cell = {
    _2_2_grid = {
        wall = {
            texture = nn
        }
    }
}

function drawGrid( ... )
    local rr, tt, oo, pp = 1, 1, 2, 2
    local hh = '_'..rr..'_'..tt..'_cell._'..oo..'_'..pp..'_grid.wall.texture'
    return
    -- 这应该在特定位置绘制纹理
    texture.quad(hh, {x,y}, {x,y}, {x,y}, {x,y})
end

问题是,它发送字符串而不是纹理数据。 当hh被打印时,它显示:_1_1_cell._2_2_grid.wall.texture,当直接使用hh时,它是正确的并且可用。 因此问题是:如何将字符串转换为加载所需的内容? 谢谢。

点赞
用户752976
用户752976

你可以使用 _G[str] 来实现:

local t = _G['_'..rr..'_'..tt..'_cell']['_'..oo..'_'..pp..'_grid'].wall.texture

不过我真的会重新考虑数据存储的方式。正确地使用数组可能会给你带来以下类似的东西:

local cell = cells[rr][tt]
local grid = cell[oo][pp]
local texture = grid.wall.texture
2017-05-04 08:25:41