5點徹底搞懂委託與事件

 學unity的同學委託事件傻傻分不清楚,今天我就給大家來講講什麼是Unity的委託的幾個要點:

  1: 定義一個委託的類型

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

delegate void Delegate_func(參數1, 參數2)

 這句是定義了一個Delegate_func的委託類型,裏面存放的函數的類型爲: void Delegate_func (參數1, 參數2)

  2: 定義一個委託容器變量,來存放函數

當我們定義好委託類型後,也就定義了這個容器存放什麼樣的函數,接下來我們定義一個委託變量, 這個就比較簡單了,  Delegate_func clicks, 如何往容器裏面加入函數呢?

一個是賦值=,一個 += 一個是-=;

clicks = xxxx函數; clicks += xxxx函數; clicks -= xxxx函數;

 

 3: 觸發委託:

   定義了好了函數類型後,將函數加入到委託容器後,你只要觸發委託調用,委託就會幫你把容器裏面的每個函數都調用一次, 觸發的時候和調用普通函數沒有區別,例如clicks(參數1, 參數2);

4: 委託有什麼用呢?

  我們經常希望某個事件發生了以後,就做某種處理, 比如,收到網絡事件後做響應的處理。這個時候,我們可以定義一個委託變量,將有事件發生後要處理的函數對象都保存進去, 當有事件發生的時候,觸發這個委託,這樣,之前的那些函數都會被調用到。有事件了,做哪些處理。

 

5: event又是什麼鬼?

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

 

如果還有疑問,可以加unity學習交流羣一起學習交流哦

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章