定义:
委托简单来说说就是把方法当做参数来传递,这种应该很形象,我们普通情况之下,参数只有class,int ,string等等这些固定的内容,而委托给了我们回调的形式,记住委托是一个方法就行!在unity里面有自带的委托Action,而且我们也可以声明自己的委托类型delegete!
实现:Action
我们引入可system这个库之后,就能适应Action这个委托了,而且我们可以在action后面跟参数,参数的意思其实就是方法里面的参数:
简单使用:
public Action action;
public void Start()
{
TestFunction(() => {
Debug.Log("11111111111111");
});
}
private void Awake()
{
//调用!!
action?.Invoke();
}
public void TestFunction(Action action)
{
action += action;
}
delegate委托
当然,如果我们不想使用自带的Action,我们也可以自定义委托,如下:
public delegate void TestDelegate();
使用方式和Action一样:
public delegate void TestDelegate();
public class Test : MonoBehaviour
{
public Action action;
public void Start()
{
TestFunction(() => {
Debug.Log("11111111111111");
});
}
private void Awake()
{
//调用!!
action?.Invoke();
}
public void TestFunction(TestDelegate action)
{
action += action;
}
}
注意事项
使用委托的时候我们需要注意的是:如果我们使用加号例如 action += action;
这样,那么意思是会累计多个回调,但是我们有时候只需要回调当前一次,那么我们可以在收到回调之后action -= action减去当前的回调!!