Unity按钮代理(AddListener)

时间:2016-08-08 15:02:38

标签: c# button unity3d delegates

我试图使用预制件立即启动几个按钮。

但是我对Delegate变量有问题。

for(int i = 0; i < _partnerList.partner.Count; i++)
{
    GameObject _instance_partner_button = Instantiate(_prefab_partner_button);
    _instance_partner_button.name = "_button_"+_partnerList.partner[i].partner_name;

    _instance_partner_button.transform.SetParent(GameObject.Find("_UI_menu_partner").transform, false);

    // Change Value of The Button ----------------------------------------------------------------
    Text _instance_partner_button_text = _instance_partner_button.GetComponentInChildren<Text>();
    _instance_partner_button_text.text = _partnerList.partner[i].partner_name;

    Button _instance_partner_button_button = _instance_partner_button.GetComponent<Button>();

    int _tempInt = i;

    // Delegate to Another Script ---------------------------------------------------------------
    _instance_partner_button_button.onClick.AddListener(() => _scripts_myScripts_ui.AnimationMenuPartner(_tempInt));
    // -------------------------------------------------------------------------------------------
}

函数AnimationMenuPartner()只是Debug.Log(_tempInt);

无论我按哪个按钮,结果都是一样的。

我可能会遗漏某些内容,因为我在此链接中看到它必须正常工作Link

感谢您的帮助。

编辑:

具有AnimationMenuPartner功能的另一个脚本

public void AnimationMenuPartner(int _tempInt)
{
    Debug.Log(_tempInt));
}

日志输出打印:&#34; 4&#34;

列表的长度。

0 个答案:

没有答案