「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# 中的委托和事件

原创文章,转载请注明出

http://www.cnblogs.com/777777-716/p/5003957.html 

原文地址:https://www.cnblogs.com/777777-716/p/5003957.html