1、 可视化绑定
这种方式就是写好一个带有public方法的脚本,然后在Button的OnClick事件位置添加对应的脚本及事件。这个方式的弊端是容易丢失绑定,适合少量的响应。
2、 脚本监听
脚本代码对按钮进行监听:btn.onclick.AddListener(“监听方法名”);然后实现对应的方法。但是当想要监听方法可以传参是该怎么写呢?
public class ButtonTest : MonoBehaviour {
private Button btn;
void Start () {
btn = transform.GetComponent<Button>();
//以下四种写法其实只是两种写法,就是delegate和lamda表达式
btn.onClick.AddListener(delegate { OnButtonClick(gameObject); });
btn.onClick.AddListener(delegate() { OnButtonClick(gameObject); });
btn.onClick.AddListener(()=>OnButtonClick(gameObject));
btn.onClick.AddListener(() => { OnButtonClick(gameObject); });
}
private void OnButtonClick(GameObject gameObject)
{
print(gameObject.name);
}
}
通过delegate或者lamda表达式就可以达成目的。
3、 监听多种事件
有时候我们不止需要点击事件,还需要鼠标进入、悬浮、退出等事件。
这需要用到UGUI的组件EventTrigger,以下是实现点击事件的具体代码。