【ハルシオンブログ】forのなかでButton.onClick.AddListenerするとき
こんにちは。
大坂です。
今日も寒いですね!
関東でも雪になるようです・・・。
さて今日のブログです。
forのなかでボタンのonClickのAddlistenerを設定したときのお話。
とりあえずこんな感じでやるとうまくいきません。
ボタンを4つセットしてループで回してボタンを押すとどのボタンを押してもログに「4」が出てきてしまいますね。

解決するには一時変数を作って「i」を入れてあげればちゃんと動きます。
こんな感じ
結果

ちゃんと意図したとおり動いてくれますね!
ちなみにAddListener はアクションを渡さないといけないみたいなのでこんな感じではコンパイルエラーになります。
で、ラムダ式にして渡してあげたんですけど、あれ?となったので、同じようなことになったときの参考になればと思います。
ではまたノシ
大坂です。
今日も寒いですね!
関東でも雪になるようです・・・。
さて今日のブログです。
forのなかでボタンのonClickのAddlistenerを設定したときのお話。
とりあえずこんな感じでやるとうまくいきません。
public Button[] button;
void Start() {
for(int i = 0; i < button.Length; i++) {
button[i].onClick.AddListener(() => ButtonTest(i));
}
}
public void ButtonTest(int index) {
Debug.Log(index);
}
ボタンを4つセットしてループで回してボタンを押すとどのボタンを押してもログに「4」が出てきてしまいますね。

解決するには一時変数を作って「i」を入れてあげればちゃんと動きます。
こんな感じ
public Button[] button;
void Start() {
for(int i = 0; i < button.Length; i++) {
int tmp = i;
button[i].onClick.AddListener(() => ButtonTest(tmp));
}
}
public void ButtonTest(int index) {
Debug.Log(index);
}
結果

ちゃんと意図したとおり動いてくれますね!
ちなみにAddListener はアクションを渡さないといけないみたいなのでこんな感じではコンパイルエラーになります。
button[i].onClick.AddListener(ButtonTest(i));
で、ラムダ式にして渡してあげたんですけど、あれ?となったので、同じようなことになったときの参考になればと思います。
ではまたノシ
Category: Androidアプリ紹介
« 【ハルシオンブログ】uGUIのTextをTextMeshProに変えたときにはまったやつ。なにこれ。 | 【ハルシオンブログ】ちょっとネタ切れなので、小ネタですいません。 »
コメント
| h o m e |