2

lua に for ループがあり、イテレータ変数を使用してその for ループ内に変数を設定しようとしています。これらの変数を設定する必要があります。

damage1
damage2
damage3
damage4
damage5
damage6
damage7
damage8
damage9
damage10
damage11

もちろん、すべてを割り当てるつもりはありません。DRY (Don't Repeat Yourself) の規則に違反するからです。これは私がうまくいくと思ったものです:

for i = 0, 11 do
    damage..i = love.graphics.newImage('/sprites/damage/damage'..i..'.png')
end

気にしないでくださいlove.graphics.newImage()。これは、私が使用しているフレームワークの単なる関数です。とにかく、誰かが助けることができますか?

前もって感謝します。

4

3 に答える 3

2

変数がlocal変数の場合、Lua はコンパイル中に名前を消去するため、必要なことを行うことは不可能です。変数がテーブルのプロパティである場合 (グローバル変数がそうであるように)、テーブル アクセスはテーブル内の文字列プロパティにアクセスするための構文糖衣であるという事実を利用できます。

--using a global variable
damage1 = 17

--is syntax sugar for acessing the global table
_G.damage1 = 17

--and this is syntax sugar for acessing the "variable1" string property
--of the global table
_G["damage1"] = 17

--and you can build this string dynamically if you want:
_G["damage"..1] = 17

ただし、lhf が言ったように、変数を個別の変数としてではなく配列に格納すると、おそらくはるかに簡単になります。

damages = {10, 20, 30, 40}

for i=1,4 do
    damages[i] = damages[i] + 1
end
于 2013-06-23T20:28:11.223 に答える