一、委托
注意:在使用委托的时候,
1、在A要委托B的时候,在B中声明一个委托,在A中赋值委托B,当B中的条件触发时,回调A中的方法
举例:当在一个界面中,在点击滑动列表中的某一项是,在界面中展示该项目详细信息时,可以在滑动列表中创建委托,在展示界面中对滑动列表中的委托进行注册,这样当在点击滑动列表项目的时候,调用委托,传送数据,展示界面数据刷新
1、普通委托不带参数
public class TestAction : MonoBehaviour {
public delegate void TestDelegate();
public TestDelegate test;
void Start () {
test = ShowTest;
test();
}
void ShowTest() {
Debug.Log("普通委托。。。");
}
}
2、普通委托带参数
public class TestAction : MonoBehaviour {
public delegate void TestDelegate(int temp);
public TestDelegate test;
void Start () {
test = ShowTest;
test(2);
}
void ShowTest(int temp) {
Debug.Log("带参数委托委托。。。" + temp);
}
}
3、C# Action 委托,是不带返回值的委托
public class TestAction : MonoBehaviour {
void Start () {
Action<string> testAction = ShowTest;
testAction("C# Action 测试!");
}
void ShowTest(string temp) {
Debug.Log(temp);
}
}
4、C# Func 委托
public class TestAction : MonoBehaviour {
void Start () {
//Func<string,string>第一个参数是输入类型,第二个返回类型Func<T,TResult>
Func<string,string> testFunc = ShowTest;
Debug.Log(testFunc("C# Func 测试!"));
}
String ShowTest(string temp) {
return temp;
}
}
public class TestAction : MonoBehaviour {
void Start () {
//如果是一个类型Func<string>,则表示返回类型为string
Func<string> testFunc = ShowTest;
Debug.Log(testFunc());
}
String ShowTest() {
return "C# Func 测试,单个参数是返回类型!";
}
}
5、lambda表达式
注意:主要用于简化函数,代码看起来简洁明了
public class TestAction : MonoBehaviour {
void Start () {
//第一个参数是传入参数类型,第二个返回委托类型
Func<int, string> testFunc = test => test + 10 + "--返回类型为string";
Debug.Log(testFunc(2));
}
int ShowTest(int temp) {
return temp;
}
}
lambda整体写法
public class TestAction : MonoBehaviour {
void Start () {
Func<int, int, bool> test = (p, k) => {
if (p + k == 10)
{
return true;
}
else {
return false;
}
};
Debug.Log("lambda 表达式,返回值测试 " + test(8,8));
}
}