unity 委托心得
在unity中,如果你想讓角色和某個游戲物體互動,那么最常見的方法就是通過達成某個條件來對指定物體進行特定操作。但是,如果物體之間的關系稍微復雜一些,那么就很容易產(chǎn)生邏輯越來越混亂的問題,比如在A情況下,B會進行移動,C會進行旋轉(zhuǎn),但同時,在A1的情況下,B會進行旋轉(zhuǎn),C則要進行移動,那么,對于B和C來說,就需要獲得A的情況并根據(jù)需要來進行相對應的操作,但如果隨著需求提升,C在某一種情況下可以改變A的條件,讓A轉(zhuǎn)變?yōu)锳1或者反過來A1轉(zhuǎn)化為A呢?這樣的話C就還要額外多獲得一個新的對于A的對象,同時編寫相對應的情況,顯而易見,此時他們之間的耦合度大大提升了,這不僅僅對于程序員來說是一種折磨,也是對后續(xù)測試的一種折磨。那么該怎么解決這個問題呢?可以委托來完成這個工作。
委托一般由三個重要結(jié)構組成,一個主控臺,一個觸發(fā)器,一個執(zhí)行器。他們之間的關系如圖

在主控臺中定義委托類型,同時寫入一個觸發(fā)的某種條件,這個條件由觸發(fā)器觸發(fā),這樣就實現(xiàn)了對觸發(fā)器的監(jiān)聽,觸發(fā)器一旦觸發(fā)了這個條件,那么就進入了下一個階段,在此之前,委托類型在執(zhí)行器中被訂閱,主控臺可以推送消息給執(zhí)行器,讓其執(zhí)行。那么我們繼續(xù)接上觸發(fā)器觸發(fā)條件之后。出發(fā)之后執(zhí)行器收到訂閱變更執(zhí)行相關操作就完成了委托。這個的好處解開條件之間的關聯(lián)性,讓腳本之間的管理變得更加輕松,是一個很實用的技巧
實操方式如下
public delegate 事件類型或者其他的什么布爾類型啊都可以 類的名字(跟上參數(shù),沒有可以不跟);
public static event 類的名字 事件名字;
public 這里隨意定義一個用于操作的參數(shù),沒有可以,根據(jù)上面的委托改變;
update{
if(事件名字不為空){
事件名字;
}
}
之后就是訂閱的方法了,一般直接+=就行,剩下的就可以自由發(fā)揮了