Unity 3D游戲開發(fā)技術詳解與典型案例
定 價:129.8 元
- 作者:吳亞峰
- 出版時間:2023/5/1
- ISBN:9787115606945
- 出 版 社:人民郵電出版社
- 中圖法分類:TP317.6
- 頁碼:533
- 紙張:
- 版次:01
- 開本:16開
本書對Unity集成開發(fā)環(huán)境的界面、腳本的編寫和眾多高級特效的實現(xiàn)進行了詳細的介紹。內(nèi)容深入淺出,是一本適合不同需求、不同開發(fā)水平的讀者的技術寶典。
全書共13章。第1章簡要介紹Unity的誕生、特點、集成開發(fā)環(huán)境的搭建及運行機制;第2章對Unity集成開發(fā)環(huán)境進行詳細的介紹;第3章介紹Unity中腳本的編寫;第4章主要對Unity開發(fā)過程中經(jīng)常使用的組件及對象進行詳細的介紹;第5章介紹Unity集成開發(fā)環(huán)境中完整的物理引擎體系,包括剛體、碰撞體、關節(jié)、交通工具、布料及粒子系統(tǒng)等知識;第6章介紹Unity中著色器的開發(fā)和著色器語言,能為讀者學習各種高級特效打下良好的基礎;第7章介紹游戲開發(fā)過程中經(jīng)常使用的一些著色特效,如邊緣發(fā)光、描邊效果、菲涅爾效果等;第8章介紹天空盒、3D拾取、重力加速度傳感器、虛擬按鈕與搖桿、聲音、水特效及霧特效等常用開發(fā)技術;第9章介紹Unity中經(jīng)常使用的光影效果,主要包括各種光源、陰影、光照貼圖、光探頭、法線貼圖、鏡頭光暈及反射探頭等相關知識;第10章介紹Unity中模型的網(wǎng)格概念及新舊動畫系統(tǒng);第11章詳細介紹Unity自帶的地形引擎、拖尾渲染器及自動尋路技術等知識;第12章介紹AssetBundle資源包的使用及Lua熱更新;第13章介紹Unity中的多線程技術與網(wǎng)絡開發(fā)。
為了便于讀者學習,本書附贈的資源包含了書中所有案例的完整源代碼,可以最大限度地幫助讀者快速掌握Unity 3D游戲開發(fā)技術。
1.內(nèi)容豐富,由淺入深
本書組織上本著“起點低,終點高”的原則,內(nèi)容覆蓋了從學習Unity 3D必知必會的基礎知識,到基于著色器語言所實現(xiàn)的震撼效果,以及3D游戲案例。這樣的內(nèi)容組織使得懵懂的菜鳥可以一步一步成長為3D開發(fā)的達人,符合絕大部分想學習3D開發(fā)的學生與技術人員,以及正在學習3D開發(fā)人員的需求。
2.結構清晰,講解到位
本書中配合每個需要講解的知識點都給出了豐富的插圖與完整的案例,使得初學者易于上手,有一定基礎的讀者便于深入。書中所有的案例均是根據(jù)筆者多年的開發(fā)心得進行設計的,結構清晰明朗,便于讀者進行學習與參考。同時書中還給出了很多筆者多年來積累的編程技巧以及心得,具有很高的參考價值。
3.實用的隨書項目資源
為了便于讀者的學習,本書附贈的隨書資源中包含了書中所有案例的完整源代碼,盡可能地幫助讀者快速掌握開發(fā)技術。
吳亞峰,有20多年的Java開發(fā)與培訓經(jīng)驗。目前主要的研究方向為計算機圖形學和深度學習。現(xiàn)任職于華北理工大學并兼任華北理工大學以升大學生創(chuàng)新實驗中心移動及互聯(lián)網(wǎng)軟件工作室負責人,同時為VR、AR、手游獨立軟件開發(fā)工程師。十多年來不但多次指導學生制作手游作品獲得多項學科競賽大獎,還為數(shù)十家著名企業(yè)培養(yǎng)了上千名高級軟件開發(fā)人員。曾編寫過《Unity 游戲開發(fā)技術詳解與典型案例》《Unity3D游戲開發(fā)標準教程》《Unity 案例開發(fā)大全》《Vulkan開發(fā)實戰(zhàn)詳解》《Android應用案例開發(fā)大全》《Android游戲開發(fā)大全》等多熱銷技術書籍。2008年初開始關注Android平臺下的3D應用開發(fā),并開發(fā)出一系列優(yōu)質(zhì)的Android應用程序與3D游戲。
目 錄
第 1章 Unity基礎及集成開發(fā)環(huán)境的搭建 1
1.1 Unity基礎知識概覽 1
1.1.1 初識Unity 1
1.1.2 Unity廣闊的市場前景 1
1.1.3 Unity的特點 1
1.2 Unity集成開發(fā)環(huán)境的搭建 3
1.2.1 Windows平臺下Unity的下載及安裝 3
1.2.2 目標平臺的SDK與Unity的集成 5
1.3 第 一個Unity程序 6
1.4 本書案例的導入及運行 10
1.5 本章小結 13
第 2章 Unity集成開發(fā)環(huán)境詳解 14
2.1 Unity集成開發(fā)環(huán)境 14
2.1.1 Unity集成開發(fā)環(huán)境的整體
布局 14
2.1.2 菜單欄 15
2.1.3 工具欄 15
2.1.4 Scene窗口 16
2.1.5 Game窗口 18
2.1.6 Hierarchy面板 19
2.1.7 Project面板 20
2.1.8 Inspector面板 21
2.1.9 狀態(tài)欄與控制臺 21
2.1.10 Animation窗口 21
2.1.11 動畫控制器編輯窗口 21
2.2 菜單欄 21
2.2.1 File 22
2.2.2 Edit 23
2.2.3 Assets 28
2.2.4 GameObject 31
2.2.5 Component 34
2.2.6 Window 38
2.3 本章小結 40
第3章 Unity腳本程序開發(fā) 41
3.1 Unity腳本概述 41
3.2 Unity中C#腳本的注意事項 41
3.3 Unity腳本的基礎語法 43
3.3.1 對游戲?qū)ο蟮某S貌僮?43
3.3.2 記錄時間 43
3.3.3 訪問游戲?qū)ο蠼M件 44
3.3.4 訪問其他游戲?qū)ο?45
3.3.5 向量 47
3.3.6 成員變量 48
3.3.7 實例化游戲?qū)ο?49
3.3.8 協(xié)同程序及其中斷 50
3.3.9 一些重要的類 50
3.3.10 特定文件夾 55
3.3.11 腳本編譯 56
3.3.12 與銷毀相關的方法 56
3.3.13 性能優(yōu)化 58
3.4 綜合案例 58
3.4.1 案例策劃及準備工作 59
3.4.2 創(chuàng)建項目及搭建場景 59
3.4.3 飛機控制腳本的編寫 60
3.4.4 攝像機跟隨腳本的編寫 63
3.5 本章小結 64
第4章 Unity圖形用戶界面基礎 65
4.1 圖形用戶界面 65
4.1.1 圖形用戶界面的控制變量 65
4.1.2 圖形用戶界面中的常用控件 71
4.1.3 圖形用戶界面中的常用方法 86
4.1.4 圖形用戶界面控件綜合案例 93
4.2 UGUI系統(tǒng) 95
4.2.1 UGUI系統(tǒng)的基礎知識 95
4.2.2 UGUI控件 97
4.2.3 UGUI布局管理器及相關組件介紹 104
4.2.4 UGUI中不規(guī)則形狀的按鈕的碰撞檢測 106
4.2.5 屏幕自適應和錨點 107
4.2.6 UGUI綜合案例—音樂播放器的UI搭建 107
4.3 Prefab資源的應用 113
4.3.1 Prefab資源的創(chuàng)建 113
4.3.2 利用Prefab資源實例化游戲?qū)ο?114
4.3.3 Prefab的編輯 114
4.4 常用的輸入對象 115
4.4.1 Touch對象 115
4.4.2 Input對象 117
4.5 本章小結 121
第5章 物理引擎 122
5.1 剛體 122
5.1.1 剛體特性 122
5.1.2 物理管理器 129
5.2 鉸接體 130
5.2.1 鉸接體的屬性 131
5.2.2 鉸接體的創(chuàng)建 131
5.2.3 運行效果 135
5.3 碰撞體 135
5.3.1 碰撞體的添加 136
5.3.2 碰撞過濾 137
5.3.3 觸發(fā)器 139
5.3.4 碰撞檢測 139
5.3.5 物理材質(zhì) 140
5.3.6 碰撞體交互 141
5.4 關節(jié) 142
5.4.1 鉸鏈關節(jié)的屬性 142
5.4.2 鉸鏈關節(jié)的創(chuàng)建 143
5.4.3 固定關節(jié)的屬性 144
5.4.4 固定關節(jié)的創(chuàng)建 144
5.4.5 彈簧關節(jié)的屬性 144
5.4.6 彈簧關節(jié)的創(chuàng)建 145
5.4.7 角色關節(jié)的屬性 145
5.4.8 角色關節(jié)的創(chuàng)建 146
5.4.9 可配置關節(jié)的屬性 146
5.4.10 可配置關節(jié)的創(chuàng)建 147
5.4.11 關節(jié)綜合案例—機械手 148
5.5 交通工具 152
5.5.1 車輪碰撞體的添加 153
5.5.2 車輪碰撞體的屬性 153
5.5.3 車輪碰撞體的應用 153
5.6 布料 157
5.6.1 蒙皮網(wǎng)格渲染器屬性 158
5.6.2 布料屬性 158
5.6.3 布料的簡單案例 159
5.7 力場 160
5.7.1 力場組件的屬性 160
5.7.2 力場綜合案例 161
5.8 角色控制器 161
5.8.1 角色控制器組件的屬性 161
5.8.2 角色控制器的案例 162
5.9 粒子系統(tǒng) 162
5.9.1 粒子系統(tǒng)的簡介 162
5.9.2 粒子系統(tǒng)的屬性 163
5.9.3 通過腳本控制粒子系統(tǒng) 173
5.9.4 粒子系統(tǒng)的綜合應用 180
5.10 物理引擎在動畫系統(tǒng)中的使用 185
5.10.1 場景的搭建 185
5.10.2 腳本的開發(fā) 187
5.10.3 運行效果 187
5.11 物理引擎綜合案例 188
5.11.1 場景的搭建 188
5.11.2 界面的搭建 192
5.11.3 腳本的開發(fā) 193
5.11.4 案例開發(fā)總結 195
5.12 本章小結 196
第6章 著色器和著色語言 197
6.1 初識著色器 197
6.1.1 著色器概述 197
6.1.2 材質(zhì)、著色器與貼圖 198
6.1.3 ShaderLab語法基礎 198
6.1.4 著色器中涉及的各種空間概念 204
6.2 渲染管線 206
6.2.1 OpenGL渲染管線 206
6.2.2 DirectX渲染管線 212
6.2.3 Unity可編程渲染階段 213
6.3 著色器的3種形態(tài) 213
6.3.1 固定管線著色器 213
6.3.2 頂點片元著色器 214
6.3.3 表面著色器 219
6.4 表面著色器的基礎知識及應用 220
6.4.1 表面著色器的基礎知識 220
6.4.2 通過表面著色器實現(xiàn)體積霧 225
6.5 渲染通道的通用指令 230
6.5.1 設置LOD數(shù)值 230
6.5.2 渲染隊列 232
6.5.3 混合操作 233
6.5.4 Alpha測試 235
6.5.5 深度測試 236
6.5.6 模板測試 239
6.5.7 通道遮罩 242
6.5.8 面的剔除操作 243
6.5.9 抓屏操作 245
6.6 曲面細分著色器 246
6.6.1 固定數(shù)量的曲面細分 246
6.6.2 基于距離的曲面細分 248
6.6.3 基于邊緣長度的曲面細分 249
6.6.4 Phong曲面細分 251
6.7 幾何著色器 252
6.8 Standard Shader 254
6.8.1 什么是基于物理的著色 254
6.8.2 材質(zhì)編輯器 254
6.9 著色器的組織、復用和移動平臺上的優(yōu)化 256
6.9.1 著色器的組織和復用 257
6.9.2 移動平臺上的優(yōu)化 261
6.10 Shader Graph 263
6.10.1 Shader Graph環(huán)境安裝 263
6.10.2 創(chuàng)建一個Shader Graph 263
6.11 著色器綜合案例 263
6.11.1 著色器綜合案例一 264
6.11.2 著色器綜合案例二 278
6.12 本章小結 281
第7章 常用著色器特效 282
7.1 頂點動畫 282
7.1.1 基本原理 282
7.1.2 開發(fā)步驟 283
7.2 紋理動畫 285
7.2.1 基本原理 285
7.2.2 開發(fā)步驟 286
7.3 邊緣發(fā)光 287
7.3.1 基本原理 287
7.3.2 開發(fā)步驟 287
7.4 描邊效果 289
7.4.1 基本原理 289
7.4.2 開發(fā)步驟 290
7.5 遮擋透視效果 292
7.5.1 基本原理 292
7.5.2 開發(fā)步驟 292
7.6 菲涅爾效果 293
7.6.1 基本原理 293
7.6.2 立方體紋理技術 294
7.6.3 開發(fā)步驟 294
7.7 高斯模糊 297
7.7.1 基本原理 297
7.7.2 開發(fā)步驟 298
7.8 Bloom效果 301
7.8.1 基本原理 301
7.8.2 開發(fā)步驟 301
7.9 景深 304
7.9.1 基本原理 304
7.9.2 開發(fā)步驟 304
7.10 積雪效果 306
7.10.1 基本原理 306
7.10.2 開發(fā)步驟 307
7.11 浴室玻璃 309
7.11.1 基本原理 309
7.11.2 開發(fā)步驟 309
7.12 消融效果 311
7.12.1 基本原理 311
7.12.2 開發(fā)步驟 311
7.13 能量罩 313
7.13.1 基本原理 313
7.13.2 開發(fā)步驟 313
7.14 本章小結 316
第8章 3D游戲開發(fā)的常用技術 317
8.1 立方貼圖技術的應用 317
8.1.1 Unity天空盒 317
8.1.2 Cubemap的應用 320
8.1.3 HDR天空盒設置 322
8.2 3D拾取技術 324
8.2.1 3D拾取技術簡介 324
8.2.2 切換可拾取性 326
8.3 視頻播放器——Video Player 327
8.3.1 視頻的屬性 327
8.3.2 視頻播放器應用案例 328
8.4 動態(tài)字體 330
8.5 重力加速度傳感器 331
8.6 PlayerPrefs類 333
8.7 虛擬按鈕與搖桿的使用 334
8.7.1 下載并導入標準資源包 335
8.7.2 使用虛擬按鈕和搖桿的案例 335
8.8 線的渲染——Line Renderer 337
8.9 Render Texture的應用 339
8.10 聲音——Audio 341
8.10.1 聲音類型 341
8.10.2 音頻管理器 341
8.10.3 音頻監(jiān)聽器 342
8.10.4 音頻源 342
8.10.5 音頻效果 346
8.10.6 音頻混響區(qū) 349
8.10.7 簡單的聲音控制案例 350
8.10.8 混音器 351
8.10.9 錄音 357
8.11 Cinemachine相機 359
8.11.1 Cinemachine相機的下載與安裝 359
8.11.2 Cinemachine相機的使用方法 359
8.12 Timeline的使用 360
8.13 多場景編輯——Multi-Scene Editing 361
8.13.1 多場景編輯的基礎操作 361
8.13.2 多場景編輯的高級操作 363
8.13.3 多場景編輯模式還存在的問題 364
8.14 水特效 364
8.14.1 基礎知識 364
8.14.2 水特效案例 365
8.15 霧特效 367
8.15.1 霧效果基本原理 367
8.15.2 場景搭建及開發(fā)步驟 367
8.16 3D場景中的其他特效 371
8.16.1 光源周圍的光暈 371
8.16.2 面板渲染 371
8.16.3 投影器 372
8.17 本章小結 372
第9章 光影效果的使用 373
9.1 渲染路徑與顏色空間 373
9.1.1 渲染路徑 373
9.1.2 顏色空間 374
9.2 光源 375
9.2.1 點光源 375
9.2.2 平行光光源 376
9.2.3 聚光燈光源 377
9.2.4 區(qū)域光光源 377
9.2.5 發(fā)光材質(zhì) 378
9.2.6 Cookies 378
9.2.7 光照過濾 378
9.3 陰影 379
9.3.1 陰影質(zhì)量 379
9.3.2 陰影性能 381
9.4 光照貼圖 381
9.4.1 對場景進行光照烘焙 381
9.4.2 光照烘焙參數(shù)詳解 383
9.5 光探頭 386
9.5.1 Light Probes的使用 386
9.5.2 Light Probes應用細節(jié) 388
9.5.3 LPPV光探頭代理 388
9.6 法線貼圖 390
9.6.1 在Unity中使用法線貼圖 391
9.6.2 如何在3ds Max中制作法線貼圖 393
9.7 鏡頭光暈——Flare 394
9.8 反射探頭 395
9.8.1 反射探頭的使用 395
9.8.2 反射探頭屬性詳解 397
9.9 鏡子的開發(fā) 399
9.9.1 場景的搭建 399
9.9.2 鏡面著色器的開發(fā) 402
9.9.3 C#腳本的開發(fā) 403
9.10 真實水面效果的開發(fā) 405
9.10.1 基本原理 406
9.10.2 場景的搭建 407
9.10.3 C#腳本的開發(fā) 407
9.10.4 鏡面著色器的開發(fā) 410
9.11 本章小結 412
第 10章 模型與動畫 413
10.1 3D模型導入 413
10.1.1 主流3D建模軟件的介紹 413
10.1.2 Unity與建模軟件單位的比例關系 414
10.1.3 將3D模型導入Unity 415
10.2 網(wǎng)格——Mesh 416
10.2.1 網(wǎng)格過濾器 416
10.2.2 Mesh的屬性和方法 416
10.2.3 Mesh的使用 417
10.2.4 使用Mesh使物體變形的簡單案例 417
10.3 第三方切割工具庫Shatter Toolkit的使用 422
10.3.1 Shatter Toolkit簡介 422
10.3.2 使用Shatter Toolkit的簡單 案例 424
10.4 舊版動畫系統(tǒng) 431
10.4.1 導入角色動畫資源 431
10.4.2 動畫控制器 432
10.4.3 動畫腳本 433
10.4.4 使用舊版動畫系統(tǒng)的簡單 案例 434
10.5 Mecanim動畫系統(tǒng) 437
10.5.1 角色動畫的配置 437
10.5.2 動畫控制器的創(chuàng)建 443
10.5.3 動畫控制器的配置 443
10.5.4 角色動畫的重定向 446
10.5.5 角色動畫的混合—— 創(chuàng)建動畫混合樹 449
10.5.6 角色動畫的混合—— 混合類型介紹 450
10.5.7 Mecanim中的代碼 控制 451
10.5.8 案例分析 456
10.6 動畫變形——Blend Shapes 459
10.7 本章小結 462
第 11章 地形與尋路技術 463
11.1 地形引擎 463
11.1.1 地形的創(chuàng)建 463
11.1.2 灰度圖的使用 468
11.2 樹編輯器 469
11.2.1 屬性介紹 469
11.2.2 簡單案例 471
11.3 拖尾渲染器——Trail Renderer 473
11.3.1 背景介紹 473
11.3.2 拖尾渲染器屬性介紹 473
11.3.3 拖尾渲染器的使用 474
11.3.4 產(chǎn)生汽車輪胎剎車痕 案例 474
11.4 自動尋路技術 478
11.4.1 基礎知識 478
11.4.2 簡單案例 479
11.5 本章小結 483
第 12章 游戲資源更新 484
12.1 AssetBundle資源包 484
12.1.1 AssetBundle簡介 484
12.1.2 創(chuàng)建AssetBundle 484
12.1.3 AssetBundle的下載 487
12.1.4 AssetBundle的加載和 卸載 489
12.1.5 關于AssetBundle 490
12.1.6 本節(jié)小結 491
12.2 Lua熱更新 491
12.2.1 熱更新的基本介紹 492
12.2.2 XLua的基本介紹 493
12.2.3 XLua框架介紹 494
12.2.4 XLua常用方法介紹 495
12.2.5 XLua熱更新案例 497
12.2.6 熱更新服務器配置 502
12.2.7 本節(jié)小結 504
12.3 本章小結 504
第 13章 多線程技術與網(wǎng)絡開發(fā) 505
13.1 多線程技術 505
13.1.1 多線程技術的基礎 知識 505
13.1.2 多線程技術用于大量 計算 506
13.1.3 多線程技術在網(wǎng)絡開發(fā)中的 應用 508
13.2 UnityWebRequest類 511
13.2.1 用UnityWebRequest類下載 網(wǎng)絡資源 512
13.2.2 場景搭建 512
13.3 JSON 514
13.3.1 JSON的基礎知識 514
13.3.2 JSON的解析 514
13.4 網(wǎng)絡類——Network 515
13.4.1 靜態(tài)變量 515
13.4.2 靜態(tài)方法 518
13.4.3 消息發(fā)送 523
13.5 基于MLAPI開發(fā)網(wǎng)絡游戲 524
13.5.1 非授權服務器和授權 服務器 524
13.5.2 Network Manager組件 524
13.5.3 使用MLAPI進行開發(fā) 525
13.6 基于Photon服務器開發(fā)網(wǎng)絡 游戲 529
13.6.1 環(huán)境搭建 529
13.6.2 案例的效果預覽 530
13.6.3 案例場景的搭建 530
13.6.4 腳本的編寫 531
13.7 本章小結 533