Unreal Engine 5 C++遊戲開發完全學習教程

貢薩洛·馬克斯

商品描述

本書可以讓我們沈浸在虛幻的遊戲項目中,由行業內四位經驗豐富的專業人士撰寫,他們有著多年的虛幻引擎開發經驗。本書將幫助我們親身體驗遊戲項目創作,並了解最新版本的虛幻引擎。首先介紹了虛幻編輯器和關鍵概念,如Actor、藍圖、動畫、繼承和玩家輸入。然後,進入第一個項目:構建躲避球遊戲。在此過程中,我們將學習射線檢測、碰撞、投射物、用戶界面和音效的概念。第二個項目是橫版動作遊戲,在遊戲的制作過程中我們將理解動畫混合、敵人人工智能(AI)、生成對象和收集物品等概念。第三個項目是一款第一人稱射擊遊戲,遊戲涵蓋創建多人遊戲的關鍵概念。學完本書,我們將對如何使用虛幻引擎提供的工具來構建自己的遊戲有一個全面的了解。

賣點1 全面實用,168個知識重、難點講解,覆蓋Unreal Engine 5C 必掌握知識點,助您全面了解UE5 C 遊戲開發的邏輯和實操方法。
賣點2 構建三個完整的可玩遊戲,讓讀者在實踐中逐步掌握遊戲開發方法,通過完成躲避球遊戲、橫版動作遊戲、第一人稱遊戲,三款功能完備的遊戲來鞏固讀者所學知識並提升學習信心。
賣點3 全彩印刷,詳盡步驟講解,配以豐富操作演示圖例,參數設置、操作效果一目了然,適合新手讀者模仿操作。
賣點4 提供本書配套代碼資源、全書圖片、部分章節教學視頻以及額外贈送資源的下載服務(讀者也可以自行從GitHub下載)

目錄大綱

第1章 虛幻引擎簡介
1.1 技術要求
練習1.01 創建虛幻引擎5項目
1.2 了解虛幻引擎編輯器
1.3 瀏覽編輯器窗口
1.4 視口選項卡
1.5 操作actor
練習1.02 在關卡中添加和刪除actor
1.6 理解藍圖actor
練習1.03 創建藍圖actor
1.7 藍圖編輯器
1.8 事件圖表選項卡
練習1.04 創建藍圖變量
練習1.05 創建藍圖函數
1.9 理解Multiply節點
1.10 探索BeginPlay和Tick事件
練習1.06 在Z 軸上偏移TestActor類
1.11 BP_ThirdPersonCharacter藍圖類
1.12 探索網格體和材質的使用
1.12.1 網格體
1.12.2 材質
1.13 在虛幻引擎5中設置材質
活動1.01 在Z 軸上無限推動TestActor
1.14 本章總結

第2章 使用虛幻引擎
2.1 技術要求
2.2 創建並設置一個空白C 項目
練習2.01 創建一個空的C 項目
2.3 在虛幻引擎中內容文件夾的結構
2.4 使用Visual Studio解決方案
在Visual Studio中調試代碼
練習2.02 調試第三人稱遊戲模板代碼
2.5 導入所需資產
練習2.03 導入角色FBX文件
2.6 虛幻引擎遊戲模式類
2.6.1 遊戲模式的默認類
2.6.2 遊戲事件
2.6.3 網絡
2.6.4 遊戲模式基礎與遊戲模式
2.6.5 關卡和關卡藍圖
2.6.6 虛幻引擎Pawn類
2.6.7 玩家控制器類
練習2.04 設置遊戲模式、玩家控制器和Pawn類
2.7 使用動畫
2.7.1 動畫藍圖
2.7.2 事件圖表選項卡
2.7.3 AnimGraph
2.7.4 狀態機
2.7.5 過渡規則
2.7.6 混合空間
練習2.05 創建人體模型動畫
活動2.01 將動畫鏈接到角色
2.8 本章總結

第3章 角色類組件和藍圖設置
3.1 技術要求
3.2 虛幻引擎角色類
擴展角色類
練習3.01 創建和設置第三人稱角色C 類
3.3 用藍圖擴展C 類
練習3.02 使用藍圖擴展C
活動3.01 在動畫項目中使用藍圖擴展C 角色類
3.4 本章總結

第4章 玩家輸入入門
4.1 技術要求
4.2 理解輸入操作和輸入映射情境
練習4.01 創建移動和跳躍輸入操作
4.3 處理玩家輸入 77
練習4.02 監聽移動和跳躍輸入操作
圍繞角色轉動攝像機
活動4.01 為角色添加行走邏輯
4.4 本章總結

第5章 射線檢測
5.1 技術要求
5.2 碰撞簡介
5.3 設置項目
練習5.01 將DodgeballCharacter轉換為俯視的視角
5.4 理解射線檢測
5.5 創建EnemyCharacter C 類
練習5.02 創建執行射線檢測的CanSeeActor函數
5.6 可視化射線檢測
練習5.03 創建LookAtActor函數
5.7 創建EnemyCharacter藍圖類
5.8 掃掠檢測
練習5.04 執行掃掠檢測
5.8.1 更改可見性檢測響應
5.8.2 多射線檢測
5.8.3 攝像機檢測通道
練習5.05 創建一個自定義的EnemySight檢測通道
活動5.01 創建SightSource屬性
5.9 本章總結 109

第6章 設置碰撞對象
6.1 技術要求 111
6.2 理解虛幻引擎5中的物體碰撞 111
6.2.1 理解碰撞組件
6.2.2 理解碰撞事件
6.2.3 理解碰撞通道
練習6.01 創建Dodgeball類
6.3 創建物理材質
練習6.02 將ProjectleMovementComponent添加到
DodgeballProjectile中
6.3.1 定時器簡介
6.3.2 理解如何生成actor
練習6.03 向EnemyCharacter類添加投擲邏輯
6.4 創建Wall類
練習6.04 創建Wall類
6.5 創建VictoryBox actor
練習6.05 創建VictoryBox類
練習6.06 給DodgeballProjectile類中添加ProjectileMovementComponent的
getter函數
活動6.01 將SpawnActor函數替換為EnemyCharacter中引用的
SpawnActorReference函數
6.6 本章總結

第7章 使用虛幻引擎5中的實用工具
7.1 技術要求
7.2 好的實踐松耦合
7.3 藍圖函數庫
練習7.01 將CanSeeActor函數移動到藍圖函數庫中
7.4 Actor組件
練習7.02 創建HealthComponent的Actor組件
練習7.03 集成HealthComponent Actor組件
7.5 探索接口
7.6 藍圖本地事件
練習7.04 創建HealthInterface類
活動7.01 將LookAtActor邏輯移到Actor組件
7.7 本章總結

第8章 使用UMG創建用戶界面
8.1 技術要求
8.2 遊戲用戶界面
8.3 UMG基礎知識
練習8.01 創建控件藍圖
8.3.1 錨點的簡介
練習8.02 編輯UMG錨點
練習8.03 創建RestartWidget C 類
練習8.04 創建將RestartWidget類添加到屏幕的邏輯
練習8.05 創建DodgeballPlayerController藍圖類
8.3.2 理解進度條
練習8.06 創建生命值進度條的C 邏輯
活動8.01 改進RestartWidget類
8.4 本章總結

第9章 添加音視頻元素
9.1 技術要求
9.2 虛幻引擎5中的音頻
練習9.01 導入音頻文件
練習9.02 當躲避球從地面反彈時播放聲音
音效衰減
練習9.03 將反彈聲音轉換成3D聲音
練習9.04 為遊戲添加背景音樂
9.3 理解粒子系統
練習9.05 當躲避球擊中玩家時生成粒子系統.
活動9.01 躲避球擊中玩家時播放聲音
9.4 探索關卡設計
練習9.06 創建關卡框架
9.5 額外的功能
9.6 本章總結

第10章 創建超級橫版動作遊戲
10.1 技術要求
10.2 項目分解
玩家角色
10.3 將第三人稱遊戲模板轉換為橫版動作
練習10.01 創建橫版動作項目並使用角色移動組件
活動10.01 讓角色跳得更高
10.4 探索橫版動作遊戲的功能
10.4.1 敵人角色
10.4.2 升級
10.4.3 收集品
練習10.02 探索人物角色編輯器並操作默認的人體模型骨骼權重
活動10.02 骨骼的操作和動畫
10.5 理解虛幻引擎5中的動畫
10.5.1 骨骼
10.5.2 骨骼網格體
10.5.3 動畫序列
練習10.03 導入和設置角色和動畫
活動10.03 導入更多自定義動畫以預覽角色運行
10.6 本章總結

第11章 使用混合空間1D、鍵綁定和狀態機
11.1 技術要求
11.2 創建混合空間
混合空間1D與普通混合空間
練習11.01 創建角色移動混合空間1D
活動11.01 添加Walking和Running動畫到混合空間
11.3 主角動畫藍圖
動畫藍圖
練習11.02 將混合空間添加到角色動畫藍圖
11.4 速度向量是什麽
練習11.03 將角色的Speed變量傳遞到混合空間
活動11.02 預覽在遊戲中運行的動畫
11.5 增強型輸入系統
練習11.04 為沖刺添加輸入
練習11.05 修改角色藍圖
練習11.06 編碼角色的沖刺功能
活動11.03 實現投擲輸入
11.6 使用動畫狀態機
練習11.07 玩家角色移動和跳躍狀態機
過渡規則
練習11.08 將狀態和過渡規則添加到狀態機
練習11.09 Time Remaining Ratio函數
活動11.04 完成Movement和Jumping狀態機
11.7 本章總結

第12章 動畫混合和蒙太奇
12.1 技術要求
12.2 動畫混合、動畫插槽和動畫蒙太奇
練習12.01 設置動畫蒙太奇
12.3 動畫蒙太奇
練習12.02 在蒙太奇中添加Throw動畫
12.4 動畫插槽管理器
練習12.03 添加新的動畫插槽
12.5 Save Cached Pose節點
練習12.04 移動狀態機中應用Save Cached Pose節點
12.6 Layered blend per bone
練習12.05 將動畫與上半身動畫插槽混合
練習12.06 預覽Throw動畫
12.7 超級橫版動作遊戲中的敵人
練習12.07 創建敵人基礎C 類
練習12.08 創建和應用敵人動畫藍圖
12.8 材質和材質實例
練習12.09 創建並應用敵人材質實例
活動12.01 更新混合權重
12.9 本章總結

第13章 創建和添加敵人人工智能
13.1 技術要求
13.2 敵人人工智能
13.3 AI控制器
自動擁有人工智能
練習13.01 實現AI控制器
13.4 導航網格體
練習13.02 為人工智能敵人實現導航網格體
13.5 重新生成導航網格體
練習13.03 重新生成導航網格體體積參數
活動13.01 創建新關卡
13.6 行為樹和黑板
13.6.1 任務
13.6.2 裝飾器
13.6.3 服務
練習13.04 創建人工智能行為樹和黑板
練習13.05 創建新的行為樹任務
練習13.06 創建行為樹邏輯
活動13.02 人工智能移動到玩家的位置
練習13.07 創建敵人巡邏點
13.7 向量變換
練習13.08 在數組中選擇一個隨機點
練習13.09 引用巡邏點actor
練習13.10 更新BTTask_FindLocation任務
13.8 玩家投射物
練習13.11 創建玩家投射物
練習13.12 初始化PlayerProjectile類的設置
活動13.03 創建玩家投射物藍圖
13.9 本章總結

第14章 生成玩家投射物
14.1 技術要求
14.2 動畫通知和動畫通知狀態
練習14.01 創建UAnimNotify類
練習14.02 將新通知添加到Throw動畫蒙太奇
14.3 播放動畫蒙太奇 322
14.3.1 在藍圖中播放動畫蒙太奇
14.3.2 在C 中播放動畫蒙太奇
練習14.03 在C 中播放Throw動畫
練習14.04 創建投射物生成插槽
練習14.05 準備SpawnProjectile()函數
練習14.06 更新Anim_ProjectleNotify類
14.4 摧毀actor
練習14.07 創建DestroyEnemy()函數
練習14.08 摧毀投射物
活動14.01 允許投射物摧毀敵人
14.5 理解和實現視覺和音頻特效
14.5.1 視覺特效(VFX)
14.5.2 音頻特效(SFX)
練習14.09 添加敵人被摧毀時的效果
練習14.10 為玩家的投射物添加效果
練習14.11 為投射物添加視覺特效和音頻特效
活動14.02 增加投射物被摧毀時的效果..
14.6 本章總結

第15章 探索收集品、能量升級和拾取物
15.1 技術要求 3
15.2 理解URotatingMovementComponent
練習15.01 創建PickableActor_Base類並添加URotatingMovement-Component
活動15.01 在PickableActor_Base中檢測玩家重疊和生成效果
練習15.02 創建PickableActor_Collectable類
活動15.02 完成PickableActor_Collectable actor
15.3 使用UE_LOG記錄變量
練習15.03 記錄玩家金幣的數量
15.4 介紹虛幻動態圖形UI
理解文本控件
練習15.04 創建金幣計數器UI HUD元素
15.5 添加和創建UMG用戶控件
練習15.05 添加金幣計數器UI到玩家屏幕
15.6 使用計時器
練習15.06 為玩家添加藥劑的能量升級行為
活動15.03 創建藥劑升級actor
練習15.07 創建Brick類
練習15.08 添加Brick類的C 邏輯
15.7 本章總結
15.8 額外的挑戰

第16章 多人遊戲基礎
16.1 技術要求
16.2 多人遊戲基礎知識
16.3 理解服務器
16.3.1 專用的服務器
16.3.2 監聽服務器
16.4 理解客戶端394
練習16.01 在多人遊戲中測試第三人稱遊戲模板
16.5 打包項目
16.6 探索連接和所有權
16.7 理解角色
16.7.1 服務器上生成actor
16.7.2 客戶端上生成actor
16.7.3 服務器上生成玩家擁有的pawn
16.7.4 客戶端上生成玩家擁有的pawn
練習16.02 實現所有權和角色
16.7.5 服務器窗口的輸出
16.7.6 服務器角色(Server Character)
16.7.7 客戶端1角色(Client 1 Character)
16.7.8 OwnershipTest actor
16.7.9 客戶端(Client 1)窗口的輸出
16.8 理解變量覆制
16.8.1 覆制變量
練習16.03 使用Replicated、ReplicatedUsing、DOREPLIFETIME和DOREPLIFETIME_CONDITION覆制變量
16.8.2 服務器窗口的輸出
16.8.3 客戶端1窗口的輸出
16.9 探索2D混合空間
練習16.04 創建一個運動的2D混合空間
16.10 Transform (Modify) Bone節點
練習16.05 創建能上下查看的角色
活動16.01 為多人第一人稱射擊遊戲項目創建角色
16.11 本章總結

第17章 使用遠程過程調用
17.1 技術要求
17.2 理解遠程過程調用
17.2.1 服務器RPC.
17.2.2 多播RPC
17.2.3 客戶端RPC
17.2.4 使用RPC時的重要注意事項
練習17.01 使用遠程過程調用
17.3 向編輯器公開枚舉
17.3.1 TEnumAsByte
17.3.2 UMETA
17.3.3 BlueprintType
練習17.02 在編輯器中使用C 枚舉
17.4 使用數組索引包裝
練習17.03 使用數組索引包裝在枚舉之間循環
活動17.01 為多人第一人稱射擊遊戲添加武器和彈藥.
17.5 本章總結

第18章 在多人遊戲中使用遊戲玩法框架類
18.1 技術要求
18.2 在多人遊戲中訪問遊戲玩法框架實例
練習18.01 顯示遊戲玩法框架實例值
18.2.1 服務器窗口的輸出
18.2.2 客戶端1窗口的輸出
18.3 使用遊戲模式、玩家狀態和遊戲狀態
18.3.1 遊戲模式
18.3.2 玩家狀態
18.3.3 遊戲狀態.
18.3.4 有用的內置函數
練習18.02 制作一個簡單的多人拾取遊戲
活動18.01 在多人第一人稱射擊遊戲中添加死亡、重生、計分板、殺戮限制和拾取
18.4 本章總結