虛幻引擎5-Unreal Engine筆記之Default Pawn與GamMode、Camera的關系
code review!
文章目錄
- 虛幻引擎5-Unreal Engine筆記之Default Pawn與GamMode、Camera的關系
- 1.`Default Pawn`與`Camera`的關系
- 1.1. Default Pawn 是什么?
- 1.2. Default Pawn 的主要組件
- 1.3. DefaultPawn 的常見應用場景
- 1.4. 如何使用 Default Pawn?
- 1.4.1.藍圖方式
- 1.4.2.C++ 方式
- 1.5. Default Pawn 與 Character 的區別
- 1.6. 常見問題
- 2.Default Pawn 和GamMode Override的關系
- 2.1. GameMode 的作用
- 2.2. GameMode Override None 的含義
- 2.3. Default Pawn 與 GameMode 的關系
- 2.4. 實際舉例
- 2.5. 常見誤區
- 3.DefaultPawn的藍圖可以查看嗎?
- 3.1.答案
- 3.2. 引擎自帶的 DefaultPawn
- 3.3. 如何“查看”或“修改”DefaultPawn的藍圖?
- 方法A:派生自己的藍圖類
- 方法B:查看引擎C++源碼(可選)
1.Default Pawn
與Camera
的關系
在Unreal Engine 5(UE5)中,Default Pawn
是引擎自帶的一種默認角色類,主要用來快速實現基本的玩家控制和攝像機跟隨。下面詳細介紹一下 Default Pawn 在 UE5 中的作用、特點以及常見用法。
1.1. Default Pawn 是什么?
DefaultPawn
是 Unreal Engine 提供的一個基礎 Pawn(棋子/角色)類,繼承自 APawn
。它帶有一些內置的功能,比如:
- 內置的球體碰撞體(Sphere Collision)
- 內置的移動組件(Floating Pawn Movement)
- 默認的攝像機和彈簧臂(Camera + Spring Arm)
- 支持 WASD(或手柄)移動和鼠標(或右搖桿)控制視角
它廣泛用于快速原型開發和測試。
-
Pawn:Pawn 是游戲世界中的一個可以被玩家或 AI 控制的實體。
-
Default Pawn:GameMode 中設置的 Default Pawn Class,決定了游戲開始時玩家默認擁有和控制的 Pawn 類型。
-
PlayerController:玩家輸入通過 PlayerController 控制 Pawn。
-
DefaultPawn
適合用來做攝像機自由移動、測試、上帝視角等不需要復雜動畫和物理的場景。 -
如果項目需要角色動畫、物理碰撞、AI 行為,請用
Character
類型。
1.2. Default Pawn 的主要組件
- Root Component:通常是一個球體碰撞體(
USphereComponent
)。 - Movement Component:
UFloatingPawnMovement
,讓 Pawn 能在場景中自由移動。 - Camera & Spring Arm:用于第三人稱或自由視角觀察。
Default Pawn 結構示意
1.3. DefaultPawn 的常見應用場景
- 第三人稱自由攝像機(如編輯器視角、上帝視角)
- 過渡/臨時 Pawn(比如用來調試關卡時快速飛行)
- 最基本的玩家控制器,不涉及人物動畫或復雜邏輯
1.4. 如何使用 Default Pawn?
1.4.1.藍圖方式
- 在“內容瀏覽器”中新建藍圖類,父類選擇
DefaultPawn
。 - 打開藍圖,編輯或擴展其功能(比如添加自定義組件或邏輯)。
- 在“世界設置”中,將
Default Pawn Class
設為自己的 Pawn 藍圖。 - 運行游戲,可以用 WASD 控制移動,鼠標控制視角。
1.4.2.C++ 方式
// 繼承 DefaultPawn
class AMyPawn : public ADefaultPawn
{GENERATED_BODY()// 可添加自定義組件或邏輯
};
然后在 GameMode 里設置:
DefaultPawnClass = AMyPawn::StaticClass();
1.5. Default Pawn 與 Character 的區別
- DefaultPawn:沒有角色骨骼和動畫系統,只有簡單移動和攝像機。
- Character:繼承自 Pawn,帶有角色骨骼、動畫藍圖、碰撞膠囊體、角色移動組件,適用于需要動畫和物理的角色。
Default Pawn | Character | |
---|---|---|
動畫 | 無 | 有(支持骨骼動畫) |
移動 | 簡單(浮空移動) | 復雜(行走、跳躍、蹲伏等) |
用途 | 攝像機、自由移動 | 真實角色控制 |
1.6. 常見問題
- 為什么鏡頭會穿墻?
因為默認的攝像機碰撞體積較小,可能需要自定義 SpringArm 的碰撞參數。 - 如何添加鼠標控制?
默認已內置基礎鼠標控制,可以通過藍圖或輸入映射修改。 - 如何讓 DefaultPawn 懸浮/飛行?
默認帶有 FloatingPawnMovement,支持六自由度飛行
。
2.Default Pawn 和GamMode Override的關系
在**Unreal Engine 5(UE5)**中,Default Pawn
和 GameMode
(尤其是 GameMode Override None
)之間的關系,是許多新手開發者經常困惑的問題。下面詳細解釋它們的作用與相互關系:
2.1. GameMode 的作用
-
GameMode 決定了關卡的基本規則,包括:
-
玩家使用的 Pawn(Default Pawn Class)
-
玩家使用的 PlayerController
-
游戲的勝負條件、重生機制等
-
每個關卡可以指定自己的 GameMode,也可以繼承全局的 GameMode。
2.2. GameMode Override None 的含義
- 在關卡的 World Settings 里有一項 GameMode Override。
- 如果設置為 None,意思是本關卡不會覆寫項目默認的 GameMode,會使用項目設置(Project Settings > Maps & Modes)里的 Default GameMode。
- 如果選擇了某個 GameMode(比如 MyGameMode),那么本關卡就會采用這個 GameMode 的 Default Pawn、PlayerController 等設置。
2.3. Default Pawn 與 GameMode 的關系
- GameMode 決定 Default Pawn
- GameMode 有一個設置項叫 Default Pawn Class。
- 游戲開始時,GameMode 會為每個玩家生成一個 Pawn,類型就是 Default Pawn Class。
- 如果 GameMode Override 為 None
- 關卡會用項目設置里的 Default GameMode。
- 也就用那個 GameMode 里的 Default Pawn Class 生成 Pawn。
- 如果 GameMode Override 為自定義 GameMode
- 則用自定義 GameMode 的 Default Pawn Class。
2.4. 實際舉例
假設項目設置如下:
- Project Settings > Maps & Modes
- Default GameMode =
MyGameMode
- MyGameMode 里 Default Pawn Class =
MyPawn
現在有兩個關卡:
- LevelA
- GameMode Override = None
- → 開始游戲時,玩家會控制
MyPawn
- LevelB
- GameMode Override =
AnotherGameMode
- AnotherGameMode 里 Default Pawn Class =
AnotherPawn
- → 開始游戲時,玩家會控制
AnotherPawn
2.5. 常見誤區
-
不能單獨設置 Default Pawn,而忽略 GameMode 的影響。
-
只要想要更換玩家默認控制的 Pawn,應該新建一個 GameMode 并設置其 Default Pawn Class,再在關卡里指定 GameMode Override。
-
Default Pawn Class 是由 GameMode 控制的。
-
GameMode Override = None,就用項目默認的 GameMode 及其 Default Pawn。
-
GameMode Override = 自定義GameMode,就用那個 GameMode 的 Default Pawn。
-
Default Pawn 和 GameMode 是緊密關聯的,不能分開單獨設置。
3.DefaultPawn的藍圖可以查看嗎?
3.1.答案
可以,但有區別:
- DefaultPawn 是引擎自帶的 C++ 類,不是藍圖類,因此不能直接在內容瀏覽器中看到它的藍圖文件。
- 可以創建自己的 DefaultPawn 派生藍圖類,然后完全可視化修改和查看!
- 內置 DefaultPawn 不是藍圖,但可以自定義藍圖派生類來“查看”和拓展它。
- 實際開發中推薦創建自己的藍圖 Pawn,這樣可視化操作、擴展性最好。
3.2. 引擎自帶的 DefaultPawn
- DefaultPawn 是 Unreal Engine 內置的 C++ 類,位于引擎源碼中。
- 它的C++源碼在
Engine/Source/Runtime/Engine/Classes/GameFramework/DefaultPawn.h
。 - 它本身不是藍圖類,所以在內容瀏覽器里直接找不到 “DefaultPawn”的藍圖。
3.3. 如何“查看”或“修改”DefaultPawn的藍圖?
方法A:派生自己的藍圖類
- 在內容瀏覽器里,右鍵 > 藍圖類 > 搜索并選擇
DefaultPawn
作為父類。 - 命名并創建藍圖類(比如
BP_MyDefaultPawn
)。 - 打開這個藍圖類,就能看到和編輯它的所有組件、變量、事件、函數等。
- 在 GameMode 里把 Default Pawn Class 設置成藍圖類。
方法B:查看引擎C++源碼(可選)
- 如果對C++感興趣,可以在引擎安裝目錄下查看 DefaultPawn 的 C++ 實現,了解它的默認行為。