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

时间:2017-05-04 07:42:51

标签: string lua love2d

拜托,我的代码是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
    --this should draw texture at certain position
    texture.quad( hh, {x,y}, {x,y}, {x,y}, {x,y} )
end

问题是,它发送字符串而不是纹理数据。 当打印hh时,它会显示:_1_1_cell._2_2_grid.wall.texture,这是正确的,直接使用而不是hh时可以使用。 所以问题是,如何转换字符串使其加载我需要的东西? 感谢。

1 个答案:

答案 0 :(得分:4)

您可以使用_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