1. 程式人生 > >[unreal4入門系列之十二] 在UE4中建立非玩家角色(NPC)

[unreal4入門系列之十二] 在UE4中建立非玩家角色(NPC)

201634k66c1j1dejd8l0ez

現在我們來建立一些NPC(non-playable characters,非玩家角色)。在這個遊戲中,當我們靠近NPC時,它們會做出相應的反應。

建立C++類

1) 在UE編輯器中,開啟檔案-新建C++類,選擇從Character(角色)類繼承,然後命名子類為NPC。

2) 編寫程式碼。開啟NPC.h檔案:
新增標頭檔案:(注意包含標頭檔案必須在#include "NPC.generated.h"這一行前面加)
#include "UObjectGlobals.h"
在原來的程式碼基礎上新增如下程式碼:
  1. public:
  2. //在目錄Collision下建立球體屬性(隨處可見,藍圖只讀),該屬性用作碰撞體
  3. UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Collision) USphereComponent* ProxSphere;
  4. //在目錄NPCMessage下建立字串屬性(隨處可見,藍圖可讀寫)
  5. UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = NPCMessage) FStringNpcMessage;
說明:FString是UE4的專用字串型別,當你在UE4中開發遊戲中,應該優先使用FString而不是STL裡面的String。因為UE4的FString等內建型別保證了跨平臺功能。


3) 重新編譯UE4專案。

建立藍圖類

1) 在內容瀏覽器,右擊NPC類,然後從這裡建立一個藍圖類。注意給每個藍圖類都命名一個獨有的名字,因為之後我們給不同的NPC賦予不同的模型網格和不同的訊息。
2) 現在開啟藍圖編輯器,選擇從新增元件中選擇Mesh網格,然後在細節面板更改Skeletal Mesh(骨骼網格)為SK_Mannequin。
 

3) 像之前一樣調整膠囊碰撞體到適合位置。
4) 在元件面板中選擇藍圖自身。然後在預設選項卡,找到NpcMessage屬性。這是從我們C++程式碼中建立的屬性並且可以在藍圖中應用。在UPROPERTY()函式裡面添加了一個NpcMessage的字串變數,並且指定了在藍圖類中可讀寫,所以在細節面板中可以進行編輯了。


 
5) 你可以繼續建立一個NPC藍圖類(或者直接從原來的NPC藍圖類中複製一個新的藍圖類),並且可以分別設定不同的NPCMessage。接著將這兩個藍圖類拖動到場景中。
 
 

後面我們會講解如何將每個NPC自身的訊息在遊戲中顯示給玩家看。