最近做一个UI面板,里面需要好几个按钮,有按钮就要添加点击事件,按我之前都是哪个按钮需要添加事件,就在这个按钮下面挂个脚本,里面写上button点击之后所出发的方法,然后直接挂载在button下面,如下图所示:
这样就可以了;但是这样做的扩展性很差,会比较凌乱,尤其是多人合作的时候,你可能让别人在需要这个按钮的点击事件的时候再去看你写的代码,并在里面进行操作,一个很好的解决方法就是C#中委托事件机制,可以直接在外部进行注册事件,这样,你只需要把事件定义好,等到别人想要用这个点击事件的时候,他也只需要重新注册一下你的事件,换成他的方法就行了,具体的操作是:
1、在你的按钮上添加一个脚本:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class ButtonEvents : MonoBehaviour
{
public delegate void ButtonDelegate();
public event ButtonDelegate ClickButton;
void Start()
{
GameObject btObj = GameObject.Find(name);
Button bt1 = btObj.GetComponent<Button>();
bt1.onClick.AddListener(delegate () { this.ButtonClick(btObj); });
}
public void ButtonClick(GameObj