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