1、Delegate是什么?
Delegate中文翻译为“委托”。
C#语言是支持代理的,并且代理是非常的好用的一种方式。简单的来说就是你委托别人帮你做一件事情,当委托人做完你委托的事情之后会告诉你他做完了。C#中的委托类似于C或C++中的函数指针。使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。与C或C++中的函数指针不同,委托是面向对象、类型安全的,并且是安全的。
先简单的使用一下Delegate(委托)
直接代码:
代理的声明,在开发中应该有一个专门用来委托的类。
1 using UnityEngine; 2 using System.Collections; 3 public class DelegateTest : MonoBehaviour 4 { 5 public delegate void LogMessageDelegate(string message); //委托的标识符就是delegate,LogMessageDelegate(string message)就是委托完毕后回调的方法名称 6 7 public static event LogMessageDelegate logMessage; //委托的事件 8 void Start() 9 { 10 if (logMessage != null) 11 { 12 logMessage("delegate test"); //在需要的地方通过委托的事件将委托的参数传递进去即可实现委托。 13 } 14 } 15 }
使用代理
1 using UnityEngine; 2 using System.Collections; 3 4 public class UseDelegateTest : MonoBehaviour 5 { 6 //在OnEnabel和OnDisable中启动与关闭委托,这也是为什么DelegateTest中要判断一下委托是否为空。如果为空的话是会有错误的。 7 void OnEnable() 8 { 9 DelegateTest.logMessage += LogMessage; 10 } 11 12 void OnDisable() 13 { 14 DelegateTest.logMessage -= LogMessage; 15 } 16 17 public void LogMessage(string message) 18 { 19 Debug.Log("log message " + message); 20 } 21 22 }