前言
這篇文章將會講述 Unity Event 的介紹及基礎使用方法。
Unity Event | 你還記得 OnClick() 嗎?
在使用 Button 的時候,是否還記得那個點擊按鈕,就能觸發掛載事件的 OnClick() 事件嗎?我們一樣能撰寫類似的系統,只需要簡單的借助 Unity內建的事件系統就可以了。
擴充性強
在物件導向中,我們會希望每個物件彼此可以獨立,並且降低耦合性,使用這個程式組件,能讓我們建置好物件才決定要觸發哪個事件。
觸發器
假設今天我們要製作一個觸發器,但我們還沒決定好要觸發哪一個事件,或是事件有太多,不希望用 Switch 一個個預先寫好,那會相當複雜,而且未來有新事件時,也會需要再寫一次。
我們就能使用 Unity Event 來撰寫這一塊,當我們按下按鈕,觸發器會觸發一個空事件,這個空事件可以在外面掛載需要的其他事件。
運作原理
它的運作原理來自於 Delegate 和 Event ,這兩個東西可以理解為訂閱跟直播主,因此直播主跟訂閱者彼此沒有關聯,不會因為訂閱者消失直播主就出現程式錯誤。
我們要做的事情就是在 Unity Inspector 中用官方寫好的組件,去訂閱這一個 Unity Event ,那我們來看看怎麼製作。
製作流程
1. 在最上面輸入 「using UnityEngine.Events;」
2. 此時可以創建一個名為 UnityEvent 的類型,命名為AddEvent,權限設定為public。
3. 創建一個公用函式,命名為 MyEvent,裡面打上 「AddEvent.Invoke();」。
4. 我們可以在 Inspector 中拖曳其他物件的公開函式進來,當 MyEvent 被觸發的時候,我們新增的所有公開函式都會一起被觸發。
5. 完成,我們能用各種方式去呼叫這個 MyEvent,它會自行運作並通知所有訂閱它的使用者。
參考資料
後記
下周發表,我把我撰寫的其中一個重要的小知識寫進來了。
瓶裝雪