Unity3D/2D游戲開發從0到1(第二版)
內容描述
本書為第二版,採用Unity 2017。全書分為實戰項目篇與開發理論篇進行系統講解。實戰項目篇由淺入深提供四個教學案例:2D小游戲兩個和兩款3D大型教學案例。通過本篇的認真學習,讀者可以達到優秀開發者的水平。開發理論篇,從初學者容易入門的角度把全書分為上、下兩篇各15章。上篇完全是為零基礎游戲愛好者或者在校大學生所準備,採用“案例化”教學思路,所學知識點與游戲案例緊密結合。下篇是理論進階篇,主要學習3D數學、3D圖形學(3D圖形渲染/貼圖/PBS材質/Shader)、TimeLine& Cinemachine、Unity2017新導航尋路、項目優化策略、游戲移植與手指觸控、對象緩沖池、網絡Socket、AssetBundle資源動態加載與AssetBundle框架設計等。
目錄大綱
項目實戰篇
實戰項目1:記憶卡牌3
1.策劃3
2.場景搭建4
3.遊戲核心邏輯5
實戰項目2:Flappy Bird 8
1.策劃8
2.場景搭建9
3.主角10
4.道具開發12
- UI界面與遊戲週期管理15
實戰項目3:不夜城跑酷17
1.策劃17
2.場景搭建19
3.主角21
4.道具開發24
5.場景與道具的動態生成算法31 - UI界面與遊戲週期管理34
7.對象緩衝池管理38
實戰項目4:生化危機41
1.策劃41
2.場景搭建45
3.主角47
4.道具開發47 - UI界面與遊戲週期管理51
開發理論篇上篇
第1章遊戲歷史與Unity發展概述54
1.1 “錢途”無限的遊戲開發領域54
1.1.1 Unity版本快速迭代升級55
1.1.2 Unity技術應用範圍56
1.1.3強大的跨平台性56
1.2電子遊戲發展史57
1.3遊戲引擎與Unity的發展歷程60
1.3.1什麼是遊戲引擎60
1.3.2遊戲引擎的功能61
1.3.3為什麼需要使用遊戲引擎61
1.3.4遊戲引擎的發展62
1.3.5 Unity遊戲引擎的特點62
1.3.6 Unity引擎的主要特性63
1.3.7 Unity遊戲引擎的發展歷史64
1.4 Unity下載與安裝65
1.4.1 Unity下載與安裝65
1.4.2 Unity的資源商店(Asset Store) 66
第2章Unity2017.x安裝與3D模型入門67
2.1 Unity 2017.x版本的下載安裝67
2.2 Unity編輯器界面75
2.2.1掌握Unity編輯器的佈局與調整77
2.2.2了解Unity編輯器各個重要視圖與作用78
2.3 3D模型入門操作80
2.3.1 3D模型的位移、旋轉與縮放80
2.3.2 3D模型操作快捷方式82
2.3.3選擇3D模型的“正”方向82
2.3.4使用屬性窗口進行精確調整84
2.4開發Unity“Hello World” 85
2.5本章練習與總結88
第3章3D模型基礎89
3.1 Unity編輯器進一步講解89
3.1.1 Unity菜單89
3.1.2項目(Project)視圖93
3.1.3場景(Scene)視圖95
3.1.4視圖顯示模式96
3.1.5場景視圖的查看與導航97
3.2世界、局部與左手坐標系98
3.2.1現實世界的“世界坐標”與“局部坐標” 98
3.2.2演示兩種坐標的差異98
3.2.3使用腳本方式演示差異99
3.2.4什麼是“左手坐標系” 100
3.2.5使用控制台(Console)窗口進行代碼調試100
3.3腳本知識入門101
3.3.1鍵盤與鼠標輸入代碼101
3.3.2環繞旋轉101
3.4小項目開發:地球環繞太陽旋轉101
3.5本章練習與總結105
3.6案例開發任務105
第4章地形編輯器106
4.1創建基本地形106
4.1.1繪製貼圖紋理109
4.1.2製作各種地形110
4.1.3種植樹木與花草113
4.2觀察虛擬世界113
4.3擴展地形編輯115
4.4本章練習與總結116
4.5案例開發任務117
第5章光源118
5.1概述118
5.2光源的分類與重要參數120
5.3典型光源場景製作121
5.4本章練習與總結123
5.5案例開發任務123
第6章光照烘焙124
6.1概述124
6.2光照烘焙125
6.3反射探針(Reflection Probe) 132
6.4光照探頭(Light Probe) 134
6.5光照預覽窗口(Light Explorer) 137
6.6本章練習與總結138
6.7案例開發任務138
第7章音頻139
7.1概述139
7.2音頻剪輯屬性140
7.3音頻監聽與音頻源組件140
7.4音頻混響器與濾波器組件143
7.5音頻混音器(Audio Mixer) 144
7.6本章練習與總結151
7.7案例開發任務151
第8章Unity腳本程序設計153
8.1 Unity腳本編輯器介紹153
8.1.1什麼是.Net框架153
8.1.2什麼是Mono與MonoDevelop 154
8.1.3什麼是Visual Studio 154
8.2腳本程序基礎155
8.2.1創建腳本注意事項155
8.2.2項目工程分層設計156
8.2.3如何更改腳本模板157
8.3 Unity重要腳本函數157
8.3.1 Unity事件函數157
8.3.2 Untiy重要核心類學習158
8.3.3 GameObject類158
8.3.4 MonoBehaviour類162
8.3.5 Transform類165
8.3. 6 Time類166
8.4 Unity腳本生命週期167
8.4.1 Unity事件函數調用順序168
8.4.2事件函數禁用與啟用規律169
8.5 Unity偽多線程揭秘172
8.6修改Unity腳本執行順序173
8.7 Unity重要應用類175
8.8 Unity輸入管理器176
8.9本章練習與總結178
第9章UI界面開發179
9.1概述179
9.2基礎控件182
9.2.1 Canvas畫布控件182
9.2.2 EventSystem控件183
9.2.3 Panel控件184
9.2.4 Text控件184
9.2.5 Image控件185
9.2.6 Button控件187
9.2.7 Button事件系統189
9.3 Anchor錨點與屏幕自適應191
9.4 UGUI高級控件193
9.4.1 Toggle控件193
9.4.2 Slider控件194
9.4.3 Scrollbar控件194
9.4.4 ScrollRect複合控件195
9.4.5 TabPage標籤頁面197
9.5 UGUI佈局管理控件199
9.6本章練習與總結202
9.7案例開發任務202
第10章3D模型與動畫製作204
10.1概述205
10.2 3DMax軟件基本使用205
10.3 3D模型尺寸單位設置207
10.4 3DMax模型製作與導出Unity流程208
10.5模型導出丟失貼圖問題212
10.6 3D文字的製作與動畫212
10.7角色Legacy動畫213
10.8 Animation動畫編輯工具216
10.9自定義資源包的導入與導出219
10.10本章練習與總結222
10.11案例開發任務222
第11章物理學模擬223
11.1概述223
11.2剛體223
11.3物理材質227
11.4腳本控制剛體229
11.5關節系統230
11.5.1鉸鏈關節230
11.5.2彈簧關節232
11.5.3固定關節232
11.5.4角色關節233
11.5.5布料模擬235
11.6物理管理器(Physics Manager) 237
11.7本章練習與總結238
第12章碰撞體與觸發器239
12.1概述239
12.2碰撞體的分類與作用240
12.3碰撞檢測事件函數241
12.4觸發檢測事件函數242
12.5碰撞過濾244
12.6本章練習與總結246
12.7案例開發任務247
第13章Unity 2D技術248
13.1概述248
13.2項目示例講解248
13.3 Untiy 2D物理引擎253
13.3.1 2D剛體253
13.3.2 2D碰撞體254
13.3.3 2D關節系統256
13.4 Unity 2D特效功能256
13.4.1 Sprite Mask功能256
13.4.2精靈效應器組件258
13.5本章練習與總結263
13.6案例開發任務263
第14章協程與調用函數264
14.1協程定義與功能264
14.2調用函數定義與功能265
14.3協程與調用函數區別與適用範圍266
14.4本章練習與總結267
14.5案例開發任務267
第15章數據傳值技術268
15.1概述268
15.2 SendMessage簡單傳值269
15.3 SendMessage高級傳值271
15.4本章練習與總結272
開發理論篇下篇
第16章3D數學274
16.1坐標系統274
16.2向量279
16.3本章練習與總結287
第17章3D圖形學288
17.1 3D圖形學概述288
17.2 Unity 3D圖形渲染289
17.2.1 Mesh Fillter網格過濾器289
17.2.2 Mesh Renderer網格渲染器290
17.2.3 Skinned Mesh Renderer蒙皮網格渲染器291
17.3貼圖292
17.3.1二維貼圖292
17.3.2視頻貼圖297
17.3.3渲染貼圖301
17.4材質302
17.4.1基於物理著色(PBS)的材質系統303
17.4.2材質球屬性305
17.4.3材質球分類306
17.5著色器(Shader) 313
17.5.1概述313
17.5.2基本原理:圖形渲染管線314
17.5.3著色器的分類與基本結構315
17.5.4固定渲染管線著色器318
17.5 .5表面著色器320
17.6本章練習與總結327
第18章TimeLine& Cinemachine技術328
18.1 TimeLine時間線328
18.2 Cinemachine虛擬攝像機332
18.3 Frame Recorder幀錄製器335
18.4本章練習與總結336
第19章粒子系統337
19.1概述337
19.2基本粒子組件屬性338
19.3粒子系統示例344
19.4 Unity內置粒子系統包346
19.5粒子系統的腳本調用方式347
19.6 Line Renderer & Trail Renderer 348
19.7本章練習與總結351
第20章Mecanim動畫系統352
20.1概述352
20.2製作Mecanim動畫系統353
20.2.1步驟一:製作Avatar替身353
20.2.2步驟二:設置動畫狀態機(Animator Controller) 356
20.2.3步驟三:設置動畫循環359
20.2.4步驟四:使用代碼控制角色動畫359
20.3融合術技術360
20.4動畫層與身體蒙版365
20.5動畫復用技術367
20.6 StateMachineBehaviour腳本368
20.7本章練習與總結370
第21章導航尋路371
21.1基本導航尋路371
21.2斜坡與跳躍374
21.3使用Off Mesh Link組件375
21.4網格分層376
21.5 Nav Mesh Obstacle組件378
21.6基於組件Nav Mesh的新特性380
21.7 Nav Mesh定向3D空間任何方向新特性382
21.8 Nav Mesh動態烘焙新特性383
21.9本章練習與總結385
第22章項目研發常用優化策略386
22.1遮擋剔除( Occlusion Culling) 386
22.2層級細節(LOD) 390
22.3項目調優工具數據分析器(Profiler) 393
22.4項目優化策略395
22.4.1項目優化之DrawCall 395
22.4.2項目優化之模型與圖像方面397
22.4.3項目優化之光照與攝像機方面399
22.4.4項目優化之程序優化方面401
22.4.5項目優化之Unity系統設置方面403
22.4.6項目優化之良好開發與使用習慣404
22.5本章練習與總結404
第23章Unity遊戲移植與手指觸控識別406
23.1 JDK安裝與環境參數配置406
23.1.1下載與安裝JDK 406
23.1.2設置JDK環境409
23.2 Android虛擬機的安裝與配置412
23.2.1下載與配置Android SDK 412
23.2.2更新環境變量415
23.3 Unity相應配置415
23.3.1 Unity配置Android SDK路徑415
23.3.2發布程序,切換到Android平台416
23.3.3更改默認的產品標示符417
23.3.4輸出*.apk包417
23.3.5真機測試418
23.4手指觸控識別418
23.4.1手指觸控API 418
23.4.2手指觸控常見方式419
23.5本章練習與總結422
第24章軟件重構思想423
24.1軟件重構的重要性423
24.2項目示例424
24.3本章練習與總結427
第25章射線428
25.1射線概述428
25.2項目示例講解429
25.2.1射擊場景開發429
25.2.2角色尋路開發430
25.3本章練習與總結431
第26章數據持久化技術432
26.1 PlayerPrefs持久化技術432
26.2 XML持久化技術434
26.3本章練習與總結439
第27章預加載與對象緩衝池技術440
27.1概述440
27.2簡單對象緩衝池技術441
27.3高級對象緩衝池技術445
27.4本章練習與總結451
第28章網絡基礎452
28.1網絡概述452
28.2多線程技術453
28.2.1多線程的定義453
28.2.2多線程的優先級454
28.2.3多線程的狀態控制455
28.2.4多線程的線程同步456
28.3套接字Socket技術458
28.3.1網絡基礎知識458
28.3.2 Socket定義459
28.3.3面向連接的Socket 459
28.3.4無連接的Socket 460
28.3.5同步Socket 460
28.3.6異步Socket 461
28.4網絡下載WWW類464
28.5本章練習與總結466
第29章AssetBundle資源動態加載467
29.1 AssetBundle概述467
29.2創建AssetBundle 468
29.3下載AssetBundle 469
29.4 AssetBundle的加載與卸載470
29.5 AssetBundle依賴關係472
29.6本章練習與總結472
第30章AssetBundle框架設計473
30.1 AssetBundle框架整體設計473
30.2自動化創建AssetBundle 475
30.2.1自動給資源文件添加標記475
30.2. 2打包資源且輸出路徑477
30.2.3刪除路徑中所有資源478
30.3單一AssetBundle包的加載與管理478
30.4 AssetBundle整體管理480
30.4.1讀取項目清單文件481
30.4.2 AssetBundle關係類482
30.4.3 AssetBundle總管理類482
30.4.4多AssetBundle管理類483
30.5本章練習與總結484
附錄A全國Unity遊戲研發職位筆試/面試真題集錦486
附錄B Unity開發常見錯誤與分析492
附錄C遊戲開發職位簡歷模板494
附錄D Unity4.x/5.x/2017.x升級差異總結498
附錄E Unity特殊文件夾一覽表501
附錄F遊戲開發對C#語言知識點基本要求504
作者介紹
擁有十多年的軟件、遊戲研發與教學經驗,具備深厚語言基礎。早年在國內上市企業做研發經理,熟悉企業大型軟件運作管理過程、軟件架構設計理論。精通與熟悉Unity3D、XNA等3D與2D 遊戲開發技術,教學語言思路清晰,循循善誘的教學方法深受廣大學子歡迎。