Unityでゲーム開発をしています。
下記のようにfor文内でラムダ式を使いボタンをクリックした際に表示しようとしました。
for (int i = 0; i < 5; i++)
{
var elem = new ScrollElement();
elem.OnClick = () => Debug.Log(i + "番目");
elements.Add(elem);
}
すると、すべてのOnClickの表示が”5番目”になってしまいました。
下記のように一つ一つ代入した場合は特に問題なく表示されました。
var elem = new ScrollElement(); elem.OnClick = () => Debug.Log(0 + "番目"); elements.Add(elem); elem = new ScrollElement(); elem.OnClick = () => Debug.Log(1 + "番目"); elements.Add(elem);
また、for文内で変数を宣言して代入した場合も問題ありませんでした。
for (int i = 0; i < 5; i++)
{
var elem = new ScrollElement();
int hoge = i;
elem.OnClick = () => Debug.Log(hoge + "番目");
elements.Add(elem);
}
Unity特有の現象でしょうか?発生する理由の分かる方がいましたら、ご教授いただきたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/09 04:09