私は理解できない動作があります。アンロールされたループはうまく動作しますが!!!ループはIndexOutOfRangeExceptionsをスローします。デバッグは0..9のteamButtonsと0..9のカードc [i]を示しています。 :(アンロールされたループが動作し、forループが機能しません。
private void Awake()
{
InitCards();
// This works!
teamButtons[0].onClick.AddListener(() => SetCard(c[0]));
teamButtons[1].onClick.AddListener(() => SetCard(c[1]));
teamButtons[2].onClick.AddListener(() => SetCard(c[2]));
teamButtons[3].onClick.AddListener(() => SetCard(c[3]));
teamButtons[4].onClick.AddListener(() => SetCard(c[4]));
teamButtons[5].onClick.AddListener(() => SetCard(c[5]));
teamButtons[6].onClick.AddListener(() => SetCard(c[6]));
teamButtons[7].onClick.AddListener(() => SetCard(c[7]));
teamButtons[8].onClick.AddListener(() => SetCard(c[8]));
// This yields an IndexOutOfRangeException
for (int i = 0; i < 9; ++i)
{
teamButtons[i].onClick.AddListener(() => { SetCard(c[i]); });
}
}
:変数...あなたがループ内で新しい変数を導入することができないのコピーをキャプチャ代わりに答えを追加します。 –
i ++ not ++ i、httを参照してくださいp://stackoverflow.com/questions/24853/what-is-the-difference-between-i--i – yes