您的位置:首页 > 移动开发 > Unity3D

「Unity」委托 将方法作为参数传递

2015-07-30 10:59 375 查看
在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# 中的委托和事件

原创文章,转载请注明出

/article/5538834.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: