虛幻引擎5-Unreal Engine筆記之GameMode
、關卡(Level)
和 關卡藍圖(Level Blueprint)
的關系
code review!
參考筆記:
1.虛幻引擎5-Unreal Engine筆記之GameMode
、關卡(Level)
和 關卡藍圖(Level Blueprint)
的關系
2.虛幻引擎5-Unreal Engine筆記之什么時候新建GameMode,什么時候新建關卡?
文章目錄
- 虛幻引擎5-Unreal Engine筆記之`GameMode`、`關卡(Level)` 和 `關卡藍圖(Level Blueprint)`的關系
- 1. GameMode 的作用
- 主要職責
- 實現方式
- 2. 關卡(Level)的角色
- 主要特點
- 與 GameMode 的關系
- 3. 關卡藍圖(Level Blueprint)的作用
- 主要職責
- 與 GameMode 的關系
- 與關卡的關系
- 4. 三者之間的關系總結
- 運行時關系
- 邏輯分工
- 5. 實際案例
- 6. 注意事項
1. GameMode 的作用
GameMode
是 UE5 中用于定義游戲規則和邏輯的核心類。它是一個全局的管理者,負責游戲的整體行為和狀態。每個關卡都會關聯一個 GameMode
,通常通過項目設置或關卡的 World Settings
指定。
主要職責
- 游戲規則:定義游戲的核心邏輯,比如勝負條件、計分規則等。
- 玩家管理:控制玩家角色的生成(通過
Pawn
和PlayerController
)、玩家登錄/退出等。 - 游戲狀態:管理游戲的狀態(開始、進行中、結束等)。
- 默認類設置:指定默認的
Pawn
、PlayerController
、HUD
等類。 - 全局邏輯:處理不依賴于特定關卡的全局游戲邏輯。
實現方式
GameMode
通常通過 C++ 或藍圖實現。如果是藍圖,可以基于GameModeBase
或GameMode
類創建。- 在項目設置中可以設置默認的
GameMode
,也可以在特定關卡的World Settings
中覆蓋默認設置。
2. 關卡(Level)的角色
關卡是 UE5 中游戲世界的具體表現形式,它包含了場景中的所有對象(如地形、靜態網格體、光源、觸發器等)。每個關卡可以看作是一個獨立的游戲場景或區域。
主要特點
- 物理空間:關卡定義了游戲世界的幾何結構和內容。
- 獨立性:一個項目可以有多個關卡,游戲可以在關卡之間切換(比如從主菜單到游戲場景)。
- World Settings:每個關卡有自己的
World Settings
,可以指定該關卡使用的GameMode
。
與 GameMode 的關系
- 每個關卡運行時會加載一個
GameMode
實例,GameMode
控制該關卡的游戲邏輯。 - 關卡本身不包含游戲規則或邏輯,規則由
GameMode
提供,關卡只提供環境和對象。
3. 關卡藍圖(Level Blueprint)的作用
關卡藍圖是特定關卡的專用藍圖,用于處理與該關卡相關的特定邏輯。它可以看作是關卡的"腳本",用來控制關卡中對象的交互和事件。
主要職責
- 關卡特定邏輯:處理與該關卡相關的特定事件或交互,比如某個門的開關、某個觸發器的邏輯。
- 對象交互:直接訪問和操作關卡中的具體對象(Actor),比如移動平臺、改變燈光狀態等。
- 事件觸發:響應關卡中的事件(如玩家進入某個區域)。
與 GameMode 的關系
- 關卡藍圖和
GameMode
是互補的: GameMode
負責全局游戲規則和邏輯,適用于整個游戲或跨關卡的邏輯。- 關卡藍圖負責處理特定關卡的局部邏輯,適用于與關卡中特定對象或事件相關的行為。
- 關卡藍圖可以與
GameMode
通信,比如通過調用GameMode
的函數或獲取GameMode
的實例來訪問全局數據。 - 例如:
GameMode
可能管理玩家的生命值,而關卡藍圖可能在玩家觸發某個陷阱時調用GameMode
的函數來扣除生命值。
與關卡的關系
- 每個關卡有一個唯一的關卡藍圖,關卡藍圖直接綁定到該關卡。
- 關卡藍圖可以直接引用和操作關卡中的 Actor,因為它與關卡是緊密耦合的。
4. 三者之間的關系總結
GameMode
是全局的游戲規則管理者,負責游戲的核心邏輯和狀態,通常跨關卡共享(除非特定關卡覆蓋默認GameMode
)。關卡(Level)
是游戲世界的物理表現,提供了場景和對象,本身不包含邏輯,但可以通過World Settings
指定一個GameMode
。關卡藍圖(Level Blueprint)
是關卡的專用腳本,負責處理關卡特有的局部邏輯,可以與GameMode
交互來獲取全局數據或觸發全局事件。
運行時關系
- 游戲啟動時,加載一個關卡。
- 關卡根據
World Settings
加載對應的GameMode
實例,GameMode
控制游戲規則。 - 關卡中的對象和事件通過關卡藍圖實現局部邏輯,關卡藍圖可以與
GameMode
交互來影響全局狀態。
邏輯分工
- 如果邏輯是全局的、與游戲規則相關的,放在
GameMode
中(比如計分、游戲結束)。 - 如果邏輯是特定關卡相關的,放在關卡藍圖中(比如某個關卡中的機關觸發)。
- 如果邏輯是特定 Actor 相關的,放在該 Actor 的藍圖中(比如一個角色的移動邏輯)。
5. 實際案例
假設正在開發一個射擊游戲:
GameMode
:定義游戲規則,比如玩家有 3 條命,擊殺敵人得 10 分,達到 100 分獲勝。管理玩家的重生、游戲結束等邏輯。關卡(Level)
:包含游戲場景,比如一個競技場,里面有墻壁、武器刷新點、敵人生成點等。關卡藍圖
:處理關卡中的特定邏輯,比如玩家進入某個區域時觸發陷阱,扣除玩家生命(通過調用GameMode
的函數)。
6. 注意事項
- 避免邏輯重疊:盡量避免在關卡藍圖中寫全局邏輯,保持
GameMode
和關卡藍圖的職責清晰。 - GameMode 覆蓋:可以在關卡的
World Settings
中為特定關卡指定不同的GameMode
,以適應不同關卡的需求。 - 通信方式:關卡藍圖可以通過
Get Game Mode
節點獲取GameMode
實例,調用其函數或訪問其變量。