回調函數(Callback)
將函數作為參數傳到另一個函數里面,當哪個函數執行完之后,再執行傳進去的這個參數。
這個過程就叫做回調:也就是主函數執行完,回頭再調用傳進來的那個函數。
回調函數的作用
回調函數的作用通常來說就是完成某個動作之后可以立馬進行另一個動作,但你不確定那個動作具體會干什么,你可以根據不同的需求來進行不同的改變。
通俗的例子
你到一個商店買東西,剛好你要的東西沒有貨,於是你在店員那里留下了你的電話。
過了幾天店里有貨了,店員就打了你的電話,然后你接到電話后就到店里去取了貨。
在這個例子里,你的電話號碼就叫回調函數,你把電話留給店員就叫登記回調函數,
店里后來有貨了叫做觸發了回調關聯的事件,店員給你打電話叫做調用回調函數,你到店里去取貨叫做響應回調事件。
例子來源(知乎回答):https://www.zhihu.com/question/19801131/answer/13005983
回調函數的定義
定義一個回調函數類:
1 using UnityEngine; 2 3 // 定義一個回調函數類 4 // 類里有一個求和方法,要求在求和結束后需要將結果顯示出來 5 public class Callback : MonoBehaviour 6 { 7 public delegate void callback(int a); 8 9 public void AddNum(int a, int b, callback call) 10 { 11 int count = a + b; 12 call(count); 13 } 14 }
定義一個測試類,去調用回調函數:
1 using UnityEngine; 2 3 // 在這個類里面調用上個類的求和方法 4 // 根據要求,添加顯示方法,將求和之后的數據顯示出來 5 public class Test : MonoBehaviour 6 { 7 public int x; 8 public int y; 9 10 Callback cb = new Callback(); 11 12 public void Start() 13 { 14 cb.AddNum(x, y, Show); 15 } 16 17 void Show(int z) 18 { 19 print(z); 20 } 21 }
測試結果:
回調函數的特點
在一個類里面定義回調函數,而在另一個類里面才有具體的實現方法。
這樣當你想修改求和之后的動作時,就可以直接在測試類中進行修改,而不用再到Callback類里面修改。
***| 以上內容僅為學習參考、學習筆記使用 |***