「Unity」委托 将方法作为参数传递
在Unity中经常会向函数传参,如:
void Start() { Print("Xxx"); } void Print(string name) { base.print(name); }
这是一种传递普通参数的方式,无论想输出什么,只要告诉Print()函数,对方就会帮忙输出。
那么问题来了,有没有一种方式可以:无论想调用什么方法,只要告诉某函数(传参),对方就会帮忙调用呢?
有的,这种方式叫做“委托”。
具体Demo代码:
class X { //定义委托,括号里参数个数与需要委托执行的函数一致 delegate void Helper(); //输出A void A() { print("A"); } //输出B void B() { print("B"); } //调用函数 void Do(Helper h) { h(); } void Start() { //声明一个委托 Helper helper; //为这个委托赋值,右边写的是需要委托的函数名 helper = A; //把传递给其他函数,这个函数会帮忙调用我们委托的函数 Do(helper); //同上 helper = B; Do(helper); } }
以上是简单的实现方式。
与委托伴随的是事件和Observer模式,以及.NET下的规范写法
请见C# 中的委托和事件
原创文章,转载请注明出