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 }
