unity:5點(diǎn)徹底搞懂委托與事件

?學(xué)unity的同學(xué)委托事件傻傻分不清楚,今天我就給大家來講講什么是Unity的委托的幾個(gè)要點(diǎn):

??1: 定義一個(gè)委托的類型

委托是一種容器,容器里面放的是函數(shù)方法。而函數(shù)的形式各不相同,參數(shù),返回值各不相同,所以你做委托之前,先得要定義好這個(gè)委托容器存放的函數(shù)的類型,即委托類型。

delegate void

Delegate_func(參數(shù)1, 參數(shù)2)

?這句是定義了一個(gè)Delegate_func的委托類型,里面存放的函數(shù)的類型為: void Delegate_func (參數(shù)1, 參數(shù)2)

??2: 定義一個(gè)委托容器變量,來存放函數(shù)

當(dāng)我們定義好委托類型后,也就定義了這個(gè)容器存放什么樣的函數(shù),接下來我們定義一個(gè)委托變量, 這個(gè)就比較簡單了,?Delegate_func clicks,如何往容器里面加入函數(shù)呢?

一個(gè)是賦值=,一個(gè)+= 一個(gè)是-=;

clicks = xxxx函數(shù); clicks += xxxx函數(shù); clicks -= xxxx函數(shù);

?3: 觸發(fā)委托:

?? 定義了好了函數(shù)類型后,將函數(shù)加入到委托容器后,你只要觸發(fā)委托調(diào)用,委托就會幫你把容器里面的每個(gè)函數(shù)都調(diào)用一次, 觸發(fā)的時(shí)候和調(diào)用普通函數(shù)沒有區(qū)別,例如clicks(參數(shù)1, 參數(shù)2);

4: 委托有什么用呢?

??我們經(jīng)常希望某個(gè)事件發(fā)生了以后,就做某種處理, 比如,收到網(wǎng)絡(luò)事件后做響應(yīng)的處理。這個(gè)時(shí)候,我們可以定義一個(gè)委托變量,將有事件發(fā)生后要處理的函數(shù)對象都保存進(jìn)去, 當(dāng)有事件發(fā)生的時(shí)候,觸發(fā)這個(gè)委托,這樣,之前的那些函數(shù)都會被調(diào)用到。有事件了,做哪些處理。

5: event又是什么鬼?

??會有這種情況,一個(gè)模塊A定義了一個(gè)委托變量, 外部模塊B,要給這個(gè)委托變量添加回掉函數(shù), 這樣,我們一般會把這個(gè)變量設(shè)置成public,直接可以訪問,可是問題來了,觸發(fā)的時(shí)候,A模塊可以觸發(fā),B模塊也可以觸發(fā),可是我如果只想要A模塊觸發(fā),B模塊只能添加,不能觸發(fā),而public權(quán)限B模塊也可以觸發(fā),這種如何解決呢?這個(gè)時(shí)候定義委托變量的時(shí)候,在前面加event, 這樣外部模塊B,只能往委托里面來添加函數(shù),而不能觸發(fā)函數(shù)調(diào)用,觸發(fā)函數(shù)調(diào)用,只有模塊A,這個(gè)就是event修飾的作用。

如果還有疑問,可以加unity學(xué)習(xí)交流群一起交流學(xué)習(xí)哦

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容