虛幻4 Event、CustomEvent、EventDispatcher

經常接觸到這些概念,今天做個總結,不涉及具體的細節,參數啊,調用啊,綁定啊等等,只是概念的區別。學術淺薄,各位一塊探討指正哈。
Event是虛幻內置的事件,這個事件什麼時候被調用由引擎決定,如常見的

Event Hit這裏寫圖片描述

Event Begin Play這裏寫圖片描述

Event Actor Begin Overlap這裏寫圖片描述

Event Actor End Overlap這裏寫圖片描述

CustomEvents自定義事件,可以自定義事件執行的代碼,在任何藍圖裏執行,使用 Call Function下的自定義事件名稱調用事件,允許多次調用。
很多時候完全把這裏的事件理解爲函數即可,只是沒有輸入參數而已。
這裏寫圖片描述這裏寫圖片描述

EventDispatcher事件調度器,可以將多個自定義事件綁定到某個事件調度器上,當這個事件調度器被調用時,所有綁定事件都會執行。同樣的,調用事件調度器使用Call節點,也可以多次調用,且可以在任何類藍圖或者關卡藍圖調用。

c#中也有事件的概念,事件是特殊的委託,只能在定義事件的類內部觸發事件,而外部只允許對事件註冊或者註銷方法。這樣的機制可以很好的維護事件的觸發正確性,防止被外界隨意出發,造成混亂。

顯然,虛幻裏的事件Event和C#的事件不是一個概念。但是,EventDispatcher事件調度器從本質上來講挺像C#的事件的,都可以註冊方法(事件)、註銷方法(事件),都是調用一次,全部註冊方法(事件)執行,屬於訂閱式的消息傳播制。

但是,虛幻的EventDispatcher事件調度器可以在定義該調度器的外部調用,感覺這樣不如c#處理的合理。
如果任何的藍圖裏都可以調用事件調度器,那最後難免會出現不知道在哪裏、在何時該事件調度器被調用的情形,這樣的情形顯然是不科學、容易出錯的。

發佈了23 篇原創文章 · 獲贊 68 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章