Unity 3D 腳本編程與游戲開發

Unity 3D 腳本編程與游戲開發

作者: 馬遙 沈琰
出版社: 人民郵電
出版在: 2021-05-01
ISBN-13: 9787115558756
ISBN-10: 7115558752
裝訂格式: 平裝
總頁數: 352 頁





內容描述


本書以游戲開發為主要線索,全面講解Unity 3D的編程技術,涵蓋Unity 3D引擎的各個系統與模塊。全書從幫助讀者迅速建立腳本編程和游戲開發的框架思路開始講起,逐步闡述Unity 3D游戲開發的核心概念,以及對游戲開發至關重要的物理系統和3D數學基礎等技術基礎。然後針對游戲中的界面、動畫、特效與音頻等Unity 3D各個常用模塊的使用方法進行講解,並詳細介紹游戲開發中數據管理與資源管理相關的知識。隨後通過潛入型游戲的完整案例將本書所講知識融會貫通。最後,講解游戲人工智能開發技術,以及對象池等高級編程技術,幫助讀者提升應對實際工作的能力。
本書內容全面,講解細致,適合游戲開發的初學者入門,也適合相關培訓機構作為教材。


目錄大綱


第1章Unity腳本概覽9
1.1控制物體的運動10
1.1.1新建腳本10
1.1.2 Start和Update事件11
1.1.3修改物體位置13
1.1.4讀取和處理輸入14
1.1.5實例:實現一個移動的小球15
1.2觸發器事件16
1.2.1創建觸發器16
1.2.2觸發器事件函數17
1.2.3實例:吃金幣18
1.3製作第一個遊戲:3D滾球跑酷20
1.3.1遊戲設計20
1.3.2功能實現21
1.3.3遊戲機制22
1.3.4完成和完善遊戲24
第2章Unity基本概念與腳本編程27
2.1 Unity基本概念28
2.1.1遊戲物體和組件28
2.1.2變換組件31
2.1.3 “父子關係”詳解33
2. 1.4物體的標籤和層36
2.1.5常用組件36
2.2用腳本獲取物體和組件38
2.2.1物體、組件和對象38
2.2.2獲取組件的方法39
2. 2.3獲取物體的方法40
2.2.4在物體和組件之間任意遨遊42
2.2.5利用公開變量引用物體和組件46
2.3用腳本創建物體49
2.3.1預製體49
2.3.2創建物體50
2.3.3創建組件52
2.3.4銷毀物體或組件53
2.3.5定時創建和銷毀物體54
2.4腳本的生命週期55
2.4.1理解腳本的生命週期56
2.4.2常見的事件方法56
2.4.3實例:跟隨主角的攝像機58
2.4.4觸發器事件59
2.5協程入門61
2.6實例:3D射擊遊戲63
2.6.1遊戲總體設計63
2.6.2遊戲的實現要點63
2.6.3創建主角64
2.6.4調整攝像機66
2.6.5實現武器系統和子彈66
2.6.6實現敵人角色71
2.6.7子彈擊中的邏輯73
2. 6.8完善遊戲75
2.6.9測試和改進76
第3章物理系統77
3.1物理系統基本概念78
3.1.1剛體78
3.1.2休眠78
3.1.3碰撞體79
3.1.4物理材質80
3.1.5觸發器80
3.1.6碰撞體的分類81
3.1.7碰撞事件表82
3.1.8層83
3.1.9物理關節83
3.1.10射線檢測84
3.1.11角色控制器與物理系統84
3.1.12 3D物理系統與2D物理系統85
3.2物理系統腳本編程86
3.2.1獲取剛體組件86
3.2.2施加作用力86
3.2.3修改速度87
3.2.4射線的使用方法88
3.2.5層和層遮罩90
3.2.6射線編程詳解90
3.2.7修改物理材質93
3.2.8 FixedUpdate詳解94
3. 2.9修改角速度96
3.2.10質心96
3.2.11更多施加力的方式97
3.2.12剛體約束98
3.3實例:基於物理系統的2D平台闖關遊戲99
3.3 .1遊戲設計99
3.3.2功能實現99
3.3.3遊戲機制100
3.3.4完成和完善遊戲103
第4章遊戲開發數學基礎107
4.1數學對遊戲的重要性108
4 .2坐標系109
4.2.1世界坐標系109
4.2.2左手坐標係與右手坐標系109
4.2.3局部坐標系110
4.2.4屏幕坐標系112
4.3向量112
4.3.1向量加法113
4.3.2向量減法113
4.3.3向量的數乘114
4.3.4向量的點積114
4.3.5向量的叉積115
4.3.6 Vector3結構體116
4.3.7位置與向量的關聯117
4.3.8向量坐標系的轉換118
4.4矩陣簡介119
4.4.1常用矩陣介紹119
4.4.2齊次坐標120
4.5四元數120
4.5.1萬向節鎖定120
4.5.2四元數的概念121
4.5.3 Quaternion結構體122
4.5.4理解和運用四元數123
4.5.5四元數的插值125
4.5 .6朝向與向量125
4.6實例:第一人稱視角的角色控制器127
4.6.1搭建簡單場景127
4.6.2創建主角物體127
4.6.3編寫控制腳本——移動部分128
4.6.4編寫控制腳本——旋轉部分129
4.6.5隱藏並鎖定鼠標指針131
4.6.6整理和完善131
第5章腳本與UI系統133
5.1用腳本操作常用UI控件134
5.1.1創建遊戲界面134
5.1.2矩形變換(Rect Transform)組件135
5 .1.3圖片(Image)組件137
5.1.4文本(Text)組件138
5.1.5按鈕(Button)組件139
5.1.6單選框(Toggle)組件141
5.1.7滑動條(Slider)組件142
5.1.8輸入框(Input Field)組件143
5.1.9滾動區域(Scroll Rect)組件144
5.2腳本與事件系統146
5.2.1常用輸入事件147
5.2.2常用輸入事件的參數150
5.2.3動態添加事件響應方法151
5.2.4事件觸發器(Event Trigger) 152
5.2.5動態綁定事件的高級技巧153
5. 3實例:界面製作與適配155
5.3.1設置UI畫布156
5.3.2製作遊戲界面的準備159
5.3.3製作遊戲界面161
5.3.4製作背包界面163
5.3 .5利用進度條製作血條164
第6章腳本與動畫系統165
6.1動畫系統基本概念166
6.1.1動畫的基本概念166
6.1.2動畫融合167
6.1.3動畫狀態機168
6.1.4根骨骼動畫170
6.2 2D動畫實例分析171
6.2.1準備工作171
6.2.2角色與控制的製作步驟173
6.2.3動畫的製作步驟175
6.2.4創建動畫變量176
6.2.5設置動畫過渡177
6.2.6用腳本修改動畫變量178
6.2.7腳本編程重點提示179
6.2.8總結和拓展180
6.3三維模型與動畫的導入181
6.3.1導入示例181
6. 3.2三維模型資源設置181
6.3.3三維動畫資源設置183
6.3.4模型骨骼與動畫骨骼的關係185
6.4動畫進階技術實例分析187
6.4.1動畫融合樹187
6.4.2第三人稱角色控制的腳本分析189
6.4.3根骨骼動畫的運用193
6.4.4動畫遮罩195
6.4.5動畫層196
6.4.6動畫幀事件197
6.4.7反向動力學(IK) 198
第7章腳本與特效201
7.1特效總覽202
7.1.1粒子202
7.1.2動畫202
7.1.3動效202
7.1.4貼花203
7.1.5拖尾203
7.1.6後期處理203
7.2特效的使用方法204
7.2.1各種特效的基本使用方法204
7.2.2動效與緩動動畫208
7.2.3 DOTween插件使用方法簡介209
7.2.4拖尾特效214
7.2.5後期處理舉例216
第8章腳本與音頻219
8.1音頻基礎概念220
8.1.1音源與音頻偵聽器220
8.1.2音源組件詳解220
8. 2腳本與音樂、音效221
8.2.1用腳本控制音樂播放222
8.2.2添加音效實例223
8.2.3音頻管理器225
第9章腳本與資源管理229
9.1工程與資源230
9.1.1 Unity項目的文件夾結構230
9.1.2 META文件231
9.1.3動態加載和釋放資源232
9.2資產包與熱更新233
9.2.1資產包(Asset Bundles) 234
9.2.2資源的常用路徑236
9.2.3資產的依賴關係237
9.2.4從網絡加載資源238
9.2.5熱更新淺析239
第10章數據的保存與加載243
10 .1腳本與序列化244
10.1.1序列化的概念244
10.1.2簡單存儲PlayerPrefs 244
10.2腳本與JSON 246
10.2.1 JSON簡介246
10.2.2安裝LitJSON庫249
10.2.3讀取JSON 252
10.2.4保存JSON 255
10.2.5在網絡中使用JSON 257
10.3其他序列化方法258
10.3.1 C#的序列化庫258
10.3 .2二進制序列化實例259
10.3.3序列化與Unity編輯器的聯繫261
第11章腳本與遊戲AI 263
11.1遊戲AI綜述264
11.1.1遊戲AI的特點264
11.1. 2常用AI技術265
11.1.3 AI的層次265
11.2腳本與導航系統266
11.2.1導航系統相關組件266
11.2.2構建導航網格266
11.2.3創建導航代理268
11.2.4導航障礙物270
11.2.5導航鏈接272
11.2.6導航系統補充說明273
11.2.7導航綜合實例274
11.3遊戲AI的編程方法277
11.3.1有限狀態機的概念277
11.3.2模擬AI視覺280
11.3.3遊戲AI實例285
11.3.4擴展AI狀態機289
11.3.5其他AI編程技術291
第12章綜合實例— —秘密敢死隊293
12.1遊戲設計294
12.1.1潛行類游戲簡介294
12.1.2遊戲總體設計294
12.2素材導入和場景搭建295
12.2.1下載並導入素材295
12. 2.2佈置場景295
12.3遊戲主角的製作296
12.3.1創建角色296
12.3.2創建動畫296
12.3.3實現角色移動297
12.3.4切換武器和道具301
12 .3.5添加武器掛點302
12.3.6實現武器和道具的基本功能303
12.3.7武器和道具的控制308
12.3.8完善主角動畫311
12.3.9完善主角遊戲邏輯312
12.3.10實現拋物線指示器312
12.4敵人角色的製作314
12.4.1創建敵人角色和動畫314
12.4.2敵人角色腳本框架315
12.4.3實現巡邏邏輯319
12. 4.4實現視覺感知320
12.4.5實現追擊功能322
12.4.6實現攻擊功能323
12.4.7組合併實現完整的AI角色324
12.4.8敵人的參數設置326
12. 5搭建關卡並完善遊戲327
12.5.1關卡設計的示例327
12.5.2添加成功和失敗的邏輯328
第13章進階編程技術329
13.1對像池330
13.1.1為什麼要使用對象池330
13.1.2簡易對像池實例330
13.1.3對像池測試方法332
13.1.4性能分析器334
13.1.5支持多種物體的對像池335
13.2 Unity協程詳解339
13.2.1熟悉而陌生的協程339
13.2.2迭代器340
13.2.3協程的延時執行原理341
13.2.4協程與遞歸344
13.3 Unity事件詳解346
13.3.1 Unity事件實例346
13.3.2 Unity事件的多參數形式348
13.3.3 Unity事件與委託350


作者介紹


馬遙,從高中時代起就與遊戲開發結下不解之緣。
平時喜歡研究動態語言和算法,擅長講解複雜的算法和概念。
曾在北京像素軟件公司任職,開發大型網絡遊戲《尋仙》,創業時期主持過多款手游和HTML5遊戲的開發,後專注於高性能遊戲服務器設計。目前從事遊戲開發教育工作,希望帶領更多人走進遊戲開發的世界。
曾編著圖書《Unity 3D完全自學教程》(電子工業出版社),翻譯圖書《遊戲AI開發實用指南》(機械工業出版社)。

沈琰,狂熱的遊戲玩家和獨立遊戲開發者,長期活躍於遊戲開發論壇與社區。
業餘時間致力於學習和分享優秀的國外教程,翻譯整理的長篇系列教程Hex Map獲得遊戲開發者廣泛讚譽。
在遊戲開發的實踐中積累了不少精彩有趣的遊戲Demo,他重新整理了一些優秀的實例,在本書中與讀者分享。




相關書籍

Unity 游戲優化, 2/e (Unity 2017 Game Optimization - Optimize all aspects of Unity performance, 2/e)

作者 Chris Dickinson 蔡俊鴻 雷鴻飛譯

2021-05-01

Learning C# by Developing Games with Unity 2021 - Sixth Edition: Kickstart your C# programming and Unity journey by building 3D games from scratch

作者 Ferrone Harrison

2021-05-01

Unity 游戲開發, 3/e (Sams Teach Yourself Unity 2018 Game Development in 24 Hours, 3/e)

作者 [美] 邁克·吉格(Mike Geig)

2021-05-01