Unity3D 利用C#實現簡單的代理模式Delegate(委托)


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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM