カラスの目はよく見るとかわいい

技術系ブログ。Unity、GoogleAppsScript、C#、VisualStudioCodeを中心に投稿しています。

UnityのButtonのonClickに引数がないせいで困ったときの解決策

UnityでButtonが複数あると、押されたときにどのボタンが押されたかわからない。

そういうときはラムダを使うと解決できる。

for(int i = 0; i < m_Buttons.Length; i++)
{
    int index = i;
    m_Buttons[i].onClick.AddListener(() =>
    {
        Debug.Log("押されたボタンのインデックス:"+index);
    });
}

ただし、iを直接ラムダの中に入れると、
どのボタンが押されてもiの最後の状態になるので注意。
m_Buttons.Lengthが5だった場合、
iはforループの最後に5になるので、その値が出力される。