小右,今天碰到一个问题。UGUI去实现按钮监听传参数的问题?
Button m_NoticeTrans;
m_NoticeTrans.onClick.AddListener(delegate(){方法名(参数); });
这样呢实现了按钮监听,并且传参数的问题。可是,熟悉NGUI的朋友经常会用一些循环去监听多个按钮。在UGUI中实现同样的功能用上面的方法就会出现越界的错误,怎么避免呢?
示例:
Button tempBtn;
for (byte i = 0; i < 4; ++i)
{
int temp = i;
m_BtnObject[temp] = m_BaseTransform.GetChild(temp ).gameObject;
tempBtn=m_BtnObject[temp ].GetComponent<Button>();
tempBtn.onClick.AddListener(delegate () { OnBtnOnclickMsg(m_BtnObject[temp]); });
}
这样问题就完美解决了,可是这是为什么呢?小右经常实验和查阅资料发现是delegate的因素导致。。。
欢迎大佬发表意见!