關於在藍圖中更新控制項中的資料,官方文件給了三種方法:函式繫結、屬性繫結、事件繫結,而更加推薦事件繫結。而在c++的學習當中,c++與控制項藍圖的結合往往是使用函式繫結,因此思考,能不能使用c++實現事件繫結。經過查詢資料後,發現可以用委託實現,因此寫下此筆記。
此例項簡單實現了血條的更新。
1.在標頭檔案中,uclass()前做出如下定義,(注:若uclass前有結構體、列舉等定義,請仍將此定義置於uclass前,即置於結構體等定義的下方)委託的引數,全看具體需求,此處僅以乙個引數為例。關於具體的格式,請參考鏈結ue4事件委託
2.還是在標頭檔案中,給出委託的宣告(其中,category可忽略)。
3.至此,在藍圖中已經可以找到剛剛宣告的委託(skill可忽略)
4.此委託可以在藍圖中呼叫,但我希望在c++中實現此過程,因此另寫了乙個函式。
5.接下來,在.cpp檔案中,對此函式進行實現(圖中health是結構體fhealth的例項)。其中,廣播剛剛宣告的委託。
6.至此,refreshhealth可在c++中需要的位置進行呼叫,由於相關的功能並未完成,因此我轉到藍圖,進行呼叫(注:此處僅為測試,最終將會在c++中實現)。目前對於結構體的set並不了解,因此這樣連線,若有更好的方法歡迎指點。
7.轉到控制項藍圖
圖中圈出部分即為實現過程,與官方文件給出的方案是一樣的。
8.再進行測試,發現可以完成血條更新。
此筆記僅為我作為初學者的一種方案,若有更好的方法,歡迎指點。
筆記參考的資料有:
1.ue4 事件委託
2.ue4 c++ 實現委託
3.[ue4]umg widget property binding(屬性繫結),事件觸發藍圖函式和c++函式
UE4 初學者入門筆記(一)
遊戲例項,自始至終存在,不依賴於關卡。一般而言,乙個遊戲只有乙個gameinstance,但是對於ue4而言,ue4不僅要面對遊戲,還要面對編輯器,甚至是輔助程式,所以engine可以管理多個gameinstance就像乙個資源可以開啟多個例項 言歸正傳,因為ue的這套editor自繪機制,還有pi...
UE4 C 學習筆記之力和力矩
任務 在遊戲開始時,給場景中的actor施加x軸方向上的力以及繞z軸方向的力矩 float.h關鍵 如下 增加兩個public向量,initforce代表施加的力,inittorque代表施加的力矩 uproperty editinstanceonly,blueprintreadwrite,cate...
C 初學者指南 筆記
5種型別類結構 列舉介面 委託如何選擇資料型別 確定該型別是數字或非數字 如果不是數字,可以選擇bool,char,string,使用佔空間最小的型別 變數兩種資料型別 引用資料型別 提供了對物件的引用 基本型別 儲存了乙個基本資料 變數也是乙個名稱或乙個識別符號,識別符號在作用域內必須是唯一的 直...