2022-11-28|閱讀時間 ‧ 約 3 分鐘

Unity C# | Unity Event

前言

這篇文章將會講述 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,它會自行運作並通知所有訂閱它的使用者。

參考資料

《Unity API | UnityEvent

《UnityEvent使脚本像Button的onClick方法一样》

後記

  下周發表,我把我撰寫的其中一個重要的小知識寫進來了。

瓶裝雪

分享至
成為作者繼續創作的動力吧!
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
© 2024 vocus All rights reserved.