發表文章

目前顯示的是 9月, 2020的文章

UE4 C++ Delegate

圖片
參考過的文章:  https://blog.csdn.net/netyeaxi/article/details/81673691 https://zhuanlan.zhihu.com/p/46358868 https://www.twblogs.net/a/5b7cd6ef2b71770a43dcd2b0 先介紹自己使用過的Delegate好了 若是你的Delegate打算在C++中宣告與使用,且也能在BP中被綁定後續要執行的內容 那你的Delegate必須被宣告為「DECLARE_DYNAMIC_MULTICAST_DELEGATE」類性的delegate 且後續宣告delegate物件時需要加上 UPROPERTY(BlueprintAssignable)來告訴UE4這是可以在BP中被呼叫且塞入綁定內容的 自己寫過的範例: 宣告了一個FUpdateUI,可以傳兩個參數 的 這樣一個類型的Delegate 這邊的兩個參數是  float Score; float Health; 兩個,因為UE4 C++的delegate要求所以看起來是一個delegate名稱+4個參數 其實是一個名稱,一個型別對一個參數 接著,我宣告使用FUpdateUI這個類型的Delegate 「 UpdatePlayerUIDelegate 」,並且他是可以在UE4 BP中被bind要執行的function的 像這樣,我就將寫在PlayerController中的Delegate 「 UpdatePlayerUIDelegate 」他一旦被broadcast的時候要執行的事情寫在BP,用BP拉好了要執行的行為。 若是不需要在BP中被呼叫使用到,可以宣告到DECLARE_MULTICAST_DELEGATE()類型的delegate即可 宣告了一個不傳任何參數,只在C++內使用的delegate FonEnemyDead類型Delegate 宣告使用這個類型的Delegate 「 EnemyDeadDelegate 」 在生成新敵人的時候,我將一個function bind綁定進去了敵人的物件中 當敵人被生成的時候,我將生成新敵人的function bind到enemy死亡時broadcast廣播的delegate EnemyDeadDelegate.Broadcast(); 如此一來,當敵

Unreal C++ - UPROPERTY() 及 UFUNCTION()常見設定差異

UPROPERTY( )   UPROPERTY(EditAnywhere) :  表示此變數可在Detail視窗 (Property Windows)變更 UPROPERTY(EditDefaultsOnly) :  表示變數僅可在Detail視窗中被修改 UPROPERTY(Category = "AAAA") :  表示此變數在grapchi與BP編輯工具中可以變顯示收納在某個分類中 UPROPERTY(BlueprintReadOnly) : 表示此變數在BP中只能被Read,不能被修改   UPROPERTY(BlueprintReadWrite) :  表示此變數在BP中可被Read可被Write UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) 表示此變數和BP中某個 同名 同型別的Widget綁定,會指向同一個物件 UPROPERTY(BlueprintAssignable) 用在Delegate上,表示此Delegate可在BP中被Assign (像是Bind?) UPROPERTY(DisplayName="Property Name") 在BP上的顯示名稱,取代掉C++中宣告的名稱 UFUNCTION( ) UFUNCTION(BlueprintCallable) 表示此C++ Function可以在BP被呼叫使用 UFUNCTION(BlueprintImplementableEvent) 表示此C++Function是在BP中被實作出來的,意思是你要先去BP把他的程式邏輯拉好,然後在C++這邊送好參數去讓這個BP處理 UFUNCTION(Client, ...) 表示為Client RPC function,呼叫只在client端上執行的function UFUNCTION(Server, ...) 表示為Server RPC function,呼叫只在Server端上執行的function UFUNCTION(NetMulticast,...) 表示為Multicast RPC function,若由server端呼叫這個,則Server端與所有有這個actor的client都會執行這個function 。(詳情見UE4 RPC / Replica