为什么会出现parameters do not match delegate?

if(t.name.CompareTo("btn_try")==0)
{
m_btn_try=t.GetComponent<Button>();
m_btn_try.onClick.AddListener(OnButRetry);
m_btn_try.gameObject.SetActive(false);
}
........
void OnButRetry(GameObject go){
Application.LoadLevel (Application.loadedLevelName);
}

然后就出现
Assets/Scripts/GameManager.cs(59,51): error CS0123: A method or delegate `GameManager.OnButRetry(UnityEngine.GameObject)' parameters do not match delegate `UnityEngine.Events.UnityAction()' parameters

蓝山帝景
浏览 156回答 1
1回答

胡说叔叔

Unity3D 吧?&nbsp;错误原因是“委托参数不匹配”。在 4.6 之前,Button.onClick.AddListener() 只能绑定没有参数的函数,例如:btn.onClick.AddListener(onBtnClick);&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;onBtnClick()&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//}4.6 之后允许匿名委托:GameObject&nbsp;btnObj;btn.onClick.AddListener(delegate()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onBtnClick(btnObj);&nbsp;&nbsp;});&nbsp;&nbsp;&nbsp;void&nbsp;onBtnClick(GameObject&nbsp;sender)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;}
打开App,查看更多内容
随时随地看视频慕课网APP