前往
大廳
主題 達人專欄

【UE4 C++ 學習筆記】從C++搭配藍圖到製作函式庫

%%鼠 拒收病婿 | 2022-05-01 17:02:59 | 巴幣 1538 | 人氣 2391

前言:
之前期末要用UE4做個遊戲,老師只有教BP,所以自己看文件學了一下C++的使用方法。

一樣內容跟程式碼會放在個人網站上


編譯環境


開啟VS installer找到 Unreal Engine安裝程式,右側需勾選Unreal Engine安裝程式

產生腳本


給玩家用的擴充腳本可由:file >創建New Character class,選public若要某些資料可以由藍圖使用。
剛創建的檔案在 Games/Source/{projectName}/Public/ 下面
預設腳本內容如下:

讓玩家繼承該ACharacter腳本:到玩家BP頁面,reparent bp選擇剛剛創的cpp檔。


複寫藍圖方法

宣告方法(.h)
.cpp

結果就能在藍圖上叫出我們定義的類別方塊了。


實作:小於z值時變成Ragdoll死亡重生

在world setting下面有kill z設定 (表物件z高度低於此就會摧毀)

在AActor類別物件z軸低於Kill Z時候會呼叫FellOutOfWorld ,我們在該方法下使用自訂的方法。

HP歸零時先轉成RagDall骨架2秒後死亡回收物件:

設計重生方法:

重生方法:

並不是每個骨架都能使用ragdoll profile,這邊下載的SK hero骨架不適用ragdoll profile,所以先改回預設的UE4白人骨架Mannequin。

成功~



建立自己的函式庫

可以看官方的教學:面向蓝图师的C++ - Unreal Engine

建立C++檔案

選擇建立bp function lib

自訂方法:取得範圍內玩家
bp原本有個Get Actor of Class方法,我們想要創個進階的:取得範圍內玩家。 紅線表示出該方法定義於 GamePlay Statics類別。

在visual studio按下 ctl+, ,尋找該類別header。

找到並複製 GetActorOfClass定義至我們自己的header檔案中:



  • BlueprintCallable 表可在bp系統中當作節點使用
  • Category 分類
  • WorldContext 直接指定物件為self。
  • DeterminesOutputType="ActorClass" 表output value自動cast to ActorClass



  • TSubclassOf<AActor> ActorClass 表輸入參數只接受AActor的子類別
  • 遊戲引擎的struct常用F開頭。
就能出現在bp上了。





實際呼叫





送禮物贊助創作者 !
0
留言

創作回應

追蹤 創作集

作者相關創作

更多創作