参考代码
public class BasicDelegate : MonoBehaviour
{
public delegate void Delegate1();
public delegate void Delegate2(int a, int b);
void Start()
{
Delegate1 Dele11 = Fun1;
Delegate2 Dele12 = Fun2;
Delegate3 Dele2 = Fun3;
}
void Fun1()
{
print("This is Fun1");
}
void Fun2()
{
print("This is Fun2");
}
void Fun3(int a, int b)
{
print("This is Fun3" + (a+b));
}
}
为方便理解,依据个人理解,作如下类比:
【关键字delegate】
一家委托公司,专门承接“委托”工作
【委托类型Delegate1();Delegate2(int a, int b)]
公司里分为不同小组,每个小组的成员负责不同参数类型、数量的工作。
Delegate1组内负责接收无参数方法的委托;
Delegate2组内负责接收两参数方法的委托
【委托Dele11;Dele12;Dele2】
Dele11、Dele12是Delegate1组内成员,负责接收Fun1()、Fun2()的委托
Dele2是Delegate2组内成员,负责接收Fun3(int a, int b)的委托
回顾代码,再次理解
public class BasicDelegate : MonoBehaviour
{
//Delegate1 是 delegate 公司的小组,负责接收无参的委托
public delegate void Delegate1();
//Delegate2 是 delegate 公司的小组,负责接收两int参数的委托
public delegate void Delegate2(int a, int b);
void Start()
{
//Delegate1组分别派Dele11、Dele12对接Fun1、Fun2
Delegate1 Dele11 = Fun1;
Delegate2 Dele12 = Fun2;
//Delegate2组派Dele2对接Fun3
Delegate3 Dele2 = Fun3;
//接受委托后,完成原函数功能
Dele11();
Dele12();
Dele2(3,4);
}
//咱的客户
void Fun1()
{
print("This is Fun1");
}
void Fun2()
{
print("This is Fun2");
}
void Fun3(int a, int b)
{
print("This is Fun3" + (a+b));
}
}