ue4在delegatecombinations.h定義了各種型別的委託給我們使用。主要型別有:
單播委託
多播委託
動態委託
可返回值委託
不同型別委託有的也可以組合出現。
指的是只能繫結乙個函式的委託,函式名字中不含multicast。
declare_delegate_oneparam單引數委託
declare_delegate_oneparam(fsingledelagatewithoneparam, fstring); fsingledelagatewithoneparam singledelagatewithoneparam;
tip:委託中引數只要變數型別無需變數具體名稱
用於繫結於類的靜態函式
bindraw是用於繫結不繼承uobject的類或者結構體的物件的方法
一般用executeifbound而不是execute,因為executeifbound更安全,指的是在委託繫結有效函式指標的前提下才能執行,而execute如果在委託繫結無效的函式指標的情況下就執行會報錯。
指的是能繫結多個函式指標的委託。多播委託的名稱中含有multicast修飾的委託。
declare_multicast_delegate_oneparam單引數多播委託
declare_multicast_delegate_oneparam(fmuitidelagatewithoneparam, fstring); fmuitidelagatewithoneparam muitidelagatewithoneparam;
新增繫結的函式指標為uobject或者繼承uobject的類物件頂點函式指標
用於繫結於類的靜態函式
broadcast();
remove和removeall,remove的引數為addduobject
函式繫結後返回的fdelegatehandle
指的是能繫結多個函式指標的委託。多播委託的名稱中含有dynamic
修飾的委託。
tip:adddynamic繫結的方法得被「ufunction」標記,否則繫結無效
指的是能擁有返回值的委託。多播委託的名稱中含有retval修飾的委託。
只能是單播,不然繫結了多個委託返回值返回哪個呢?相信它自己也不知道。。。
我感覺委託就是軟體經典模式中的「觀察者模式(observer)」的具體運用,可以很好的松耦合。
UE4 事件委託
1 先在標頭檔案上面宣告乙個 名字要以f開頭 宣告乙個事件委託 第乙個引數事件的名稱 自己定義 後面的引數是事件所需要的引數 因為有6個引數 所以新增 sixparams declare dynamic multicast delegate sixparams fonhealthchangesign...
UE4之單播委託
參考 實現乙個簡單的demo,主要通過拉近拉遠來實現燈光的控制。實現邏輯如下 定義乙個委託 這裡我定義的是乙個有引數的委託 declare delegate oneparam mydelegate,bool uclass class tarraytest api atarraytestgamemod...
UE4之多播委託
參考 概念 這裡我計畫使用多播委託開兩個燈 多播委託的定義 declare dynamic multicast sparse delegate oneparam 定義的委託的型別必須是f開頭 所以我定義的函式如下 declare dynamic multicast delegate oneparam...