2017-05-04 3 views
1

Bitte benutzen, ich erhielt Code in lua (love2d):Wie String als Variablennamen in lua

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 

Problem ist, sendet sie Zeichenfolge anstelle der Texturdaten. Wenn hh gedruckt wird, zeigt es: _1_1_cell._2_2_grid.wall.texture, das ist richtig und funktioniert, wenn es direkt anstelle von hh verwendet wird. so ist Frage, wie man die Zeichenkette umwandelt, um es zu laden, was ich brauche? danke.

Antwort

3

können Sie _G[str] dafür verwenden:

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

Ich würde wirklich die Art und Weise überdenken Sie Daten speichern, though. Arrays richtig würden Sie (so etwas wie) geben:

local cell = cells[rr][tt] 
local grid = cell[oo][pp] 
local texture = grid.wall.texture 
+0

Dank. wusste nicht einmal, dass es möglich ist [...] [...] nebeneinander zu benutzen ... –