【Unity】スクリプトで生成するボタンのOnClick()設定

Unity : 2018.3.2

問題

ボタンのプレハブにOnClick()設定が反映されない!? f:id:NazzTea:20190202231210p:plain

やりたいこと

・ボタンを動的に作りたい。
・どのボタンが押されたか判別したい。
・OnClickに引数も渡したい。

コード

●ボタンに持っておきたいデータ

public class CharacterData
{
    public Texture2D thumbnail;
    public Texture2D Character2D;
}

●実行したい関数

    public void SetCharacter(CharacterData cData)
    {
        Debug.Log("★★★"+ cData.thumbnail);
        Debug.Log("★★★" + cData.Character2D);
    }

●ボタンアクションに実行したい関数をセット

CharacterData cData = new CharacterData();
・・・
Button button = ButtonPrefab.GetComponent<Button>();
button.onClick.AddListener(() => SetCharacter(cData));


結果

f:id:NazzTea:20190202232858p:plain


補足

キャラクターデータはこんな感じで持ってます。
f:id:NazzTea:20190204221403p:plain
Inspectorで管理がベストなんだろうか・・・最初にメモリに全部持ったりしてるんじゃないかなと思いつつなんか便利なので使ってみてます。 プレハブやサムネはそんなにメモリ食うものじゃないし、メモリがシビアなコンテンツでは無いのでこの管理で行こうって感じです。 プレハブが参照を全部持って来るとなるとVRMデータはやばい。 今回は思考停止してますが気を付けましょう。
f:id:NazzTea:20190204221224p:plain
あとはSetCharacter関数を書いて、スクリプトで作成したButtonのイベントリスナーに登録(AddListener)したらOK