《Unity 5.X 3D遊戲開發技術詳解與典型案例》是2018年4月人民郵電出版社出版的圖書,作者是吳亞峰、索依娜。
基本介紹
- 書名:Unity 5.X 3D遊戲開發技術詳解與典型案例
- 作者:吳亞峰、索依娜
- ISBN:9787115412737
- 頁數:627頁
- 定價:89元
- 出版社:人民郵電出版社
- 出版時間:2018年4月
- 裝幀:平裝
- 開本:16開
內容簡介,圖書目錄,
內容簡介
本書對Unity 3D集成開發環境界面、腳本的編寫和眾多高 級特效的實現進行了詳細介紹,內容深入淺出,是一本適合不同需求、不同開發水平讀者的技術寶典。
全書共分16章。第 1章主要介紹了Unity 3D的誕生、特點、開發環境的搭建及運行機制;第 2章對Unity 3D集成開發環境進行了詳細介紹;第3章介紹了Unity 3D中腳本的編寫;第4章主要對Unity 3D開發過程中經常使用的組件及對象進行了詳細介紹;第5章介紹了Unity遊戲開發中非常流行的第三方UI界面開發組件庫—NGUI的基礎知識;第6章介紹了Unity開發平台的完整的物理引擎體系;第7章介紹了Unity 3D中的著色器和著色器語言—ShaderLab;第8章介紹了天空盒、虛擬按鈕與搖桿、聲音、水特效、3D拾取、重力加速度感測器及霧特效等開發常用的技術;第9章介紹了Unity中經常使用的光影效果,主要包括各種光源、光照烘焙、法線貼圖、鏡面特效、波動水面真實效果等技術;第 10章介紹了Unity中模型的格線概念及新舊動畫系統;第 11章介紹了Unity自帶的地形引擎、拖尾渲染及導航格線和尋路系統等知識;第 12章介紹了AssetBundle更新資源包的使用;第 13章介紹了Unity中的多執行緒技術與網路開發;第 14章介紹了Unity 2D遊戲開發工具;第 15章介紹了Unity 3D提供的Profiler工具的使用方法,及斷點調試的兩種方式;第 16章介紹了完整的大型3D遊戲案例—指間足球。
為了便於讀者學習,本書還附贈光碟,包含了書中所有案例的完整原始碼,能夠幫助讀者快速掌握開發技術。
圖書目錄
第 1章 Unity基礎以及開發環境的搭建 1
1.1 Unity基礎知識概覽 1
1.1.1 初識Unity 1
1.1.2 Unity的誕生及發展 1
1.1.3 Unity廣闊的市場前景 2
1.1.4 獨具特色的Unity 3
1.2 Unity開發環境的搭建 7
1.2.1 Windows平台下Unity的下載
及安裝 7
1.2.2 Mac OS平台下Unity的下載
及安裝 11
1.2.3 目標平台的SDK與Unity
集成 14
1.3 第 一個Unity程式 17
1.4 本書案例的導入及運行 21
1.5 本章小結 25
第 2章 Unity集成開發環境詳解 27
2.1 Unity集成開發環境的整體布局 27
2.1.1 Unity集成開發環境的整體
布局 27
2.1.2 選單欄 28
2.1.3 工具列 28
2.1.4 場景設計面板 29
2.1.5 遊戲預覽面板 32
2.1.6 遊戲組成對象列表 33
2.1.7 項目資源列表 34
2.1.8 屬性查看器 35
2.1.9 狀態欄與控制台 35
2.1.10 動畫視圖 36
2.1.11 動畫控制器編輯視圖 36
2.2 選單欄 37
2.2.1 檔案(File) 37
2.2.2 編輯(Edit) 40
2.2.3 資源(Assets) 46
2.2.4 遊戲對象(GameObject) 52
2.2.5 組件(Component) 55
2.2.6 視窗(Window) 60
2.2.7 幫助(Help) 65
2.3 本章小結 70
第3章 Unity腳本程式開發 71
3.1 Unity腳本概述 71
3.2 Unity中C#腳本的注意事項 71
3.2.1 繼承自MonoBehaviour類 72
3.2.2 類名字必須匹配檔案名稱 72
3.2.3 使用Awake或Start方法初
始化 72
3.2.4 Unity腳本中協同程式有不同的語法規則 72
3.2.5 只有滿足特定情況變數才能顯示在屬性查看器中 72
3.2.6 儘量避免使用構造函式 72
3.2.7 調試 72
3.3 Unity腳本的基礎語法 73
3.3.1 常用操作 73
3.3.2 記錄時間 74
3.3.3 訪問遊戲對象組件 75
3.3.4 訪問其他遊戲對象 76
3.3.5 向量 78
3.3.6 成員變數和靜態成員變數 79
3.3.7 實例化遊戲對象 80
3.3.8 協同程式和中斷 80
3.3.9 一些重要的類 81
3.3.10 性能最佳化 85
3.3.11 腳本編譯 86
3.4 綜合案例 86
3.4.1 案例策劃及準備工作 87
3.4.2 創建項目及場景搭建 87
3.4.3 飛機控制腳本實現 89
3.4.4 攝像機跟隨腳本實現 92
3.5 本章小結 93
第4章 Unity 3D圖形用戶界面基礎 95
4.1 GUI圖形用戶界面系統 95
4.1.1 圖形用戶界面組件的變數 95
4.1.2 圖形用戶界面中的常用控制項 102
4.1.3 圖形用戶界面控制項綜合案例 125
4.2 UGUI圖形用戶界面系統 127
4.2.1 創建UGUI控制項 127
4.2.2 Canvas畫布 128
4.2.3 EventSystem 129
4.2.4 RectTransform組件 130
4.2.5 Panel控制項 130
4.2.6 Button控制項 131
4.2.7 Text控制項 134
4.2.8 Image控制項 135
4.2.9 Raw Image控制項 135
4.2.10 Slider控制項 136
4.2.11 Scrollbar控制項 137
4.2.12 Toggle控制項 138
4.2.13 Input Field控制項 139
4.2.14 UGUI布局管理的使用及相
關組件介紹 140
4.2.15 UGUI中不規則形狀的按鈕
的碰撞檢測 142
4.2.16 Scroll View的製作 143
4.2.17 UGUI綜合案例—音樂播
放器的UI搭建 145
4.3 預製件(prefab)資源的套用 153
4.3.1 預製件(prefab)資源的
創建 153
4.3.2 通過prefab資源進而實例化
對象 154
4.4 常用的輸入對象 155
4.4.1 Touch輸入對象 155
4.4.2 Input輸入對象 157
4.5 與銷毀相關的方法 161
4.5.1 Object.Destroy方法 162
4.5.2 NetWork.Destroy方法 162
4.5.3 MonoBehaviour.OnDestroy
方法 163
4.6 本章小結 163
第5章 Unity 3D 第三方2D
組件庫—NGUI 165
5.1 初識NGUI 165
5.1.1 NGUI背景概述 165
5.1.2 NGUI的導入 165
5.1.3 UI層簡介 166
5.2 NGUI選單介紹 167
5.2.1 “Selection”選單 168
5.2.2 “Create”選單 168
5.2.3 “Attach”選單 168
5.2.4 “Tween”選單 173
5.2.5 “Open”選單 173
5.2.6 其他選單 175
5.3 控制項工具的使用 176
5.3.1 圖片精靈—Sprite 176
5.3.2 文本標籤—Label 177
5.3.3 圖片精靈—Texture 179
5.3.4 組件容器—Widget 180
5.3.5 錨點—Anchor 182
5.3.6 面板—Panel 183
5.3.7 滾動視圖—Scroll View 184
5.3.8 格線—Grid 186
5.3.9 表格—Table 187
5.4 UI庫中默認組件的製作 187
5.4.1 按鈕—Colored Button 187
5.4.2 複選框—Colored Checkbox 189
5.4.3 水平滾動條—Colored Horizontal Scroll Bar 192
5.4.4 滑塊—Colored Slider 194
5.4.5 彈出列表—Colored Popup List 197
5.4.6 輸入框—Control - Simple Input Field 199
5.5 雜項 200
5.5.1 Atlas圖集製作 200
5.5.2 中文字型製作 202
5.5.3 動畫曲線編輯 203
5.6 一個NGUI的綜合案例 204
5.6.1 界面一製作 204
5.6.2 界面二製作 207
5.6.3 界面三製作 210
5.7 本章小結 212
第6章 物理引擎 213
6.1 剛體 213
6.1.1 剛體特性 213
6.1.2 物理管理器 219
6.2 碰撞器 221
6.2.1 碰撞器的添加 222
6.2.2 碰撞過濾 225
6.2.3 物理材質 228
6.3 粒子系統 229
6.3.1 粒子系統的簡介 229
6.3.2 粒子系統的特性 230
6.3.3 粒子系統的綜合使用 238
6.4 關節 243
6.4.1 鉸鏈關節的特性 243
6.4.2 鉸鏈關節的創建 244
6.4.3 固定關節的特性 245
6.4.4 固定關節的創建 245
6.4.5 彈簧關節的特性 246
6.4.6 彈簧關節的創建 247
6.4.7 角色關節的特性 247
6.4.8 角色關節的創建 248
6.4.9 可配置關節的特性 249
6.4.10 可配置關節的創建 250
6.4.11 關節綜合案例—機械手 251
6.5 交通工具 256
6.5.1 車輪碰撞器添加 256
6.5.2 車輪碰撞器的特性 257
6.5.3 車輪碰撞器的套用 258
6.6 布料 262
6.6.1 蒙皮格線 263
6.6.2 布料特性 263
6.6.3 布料的簡單案例 264
6.7 力場 265
6.7.1 力場組件特性 265
6.7.2 力場綜合案例 266
6.8 物理引擎在動畫系統中的使用 267
6.8.1 場景的搭建 267
6.8.2 腳本的開發 270
6.8.3 運行效果 271
6.9 物理引擎綜合案例 271
6.9.1 場景的搭建 271
6.9.2 界面的搭建 277
6.9.3 腳本的開發 277
6.9.4 案例開發總結 280
6.10 本章小結 280
第7章 著色器—Shader 281
7.1 初識著色器 281
7.1.1 著色器概述 281
7.1.2 ShaderLab語法基礎 282
7.1.3 著色器中涉及的各種空間
概念 287
7.2 著色器的3種形態 289
7.2.1 固定管線著色器 289
7.2.2 頂點片元著色器 290
7.2.3 表面著色器 294
7.3 表面著色器 295
7.3.1 表面著色器基礎知識 296
7.3.2 通過表面著色器實現體
積霧 300
7.4 渲染通道的通用指令 305
7.4.1 設定LOD數值 305
7.4.2 渲染佇列 307
7.4.3 混合模式介紹 309
7.4.4 Alpha測試 310
7.4.5 深度測試 312
7.4.6 通道遮罩 314
7.4.7 面的剔除操作 315
7.4.8 抓屏操作 317
7.5 著色器的組織和最佳化 318
7.5.1 著色器的組織和復用 319
7.5.2 移動平台上的最佳化 322
7.6 綜合案例 324
7.6.1 案例策劃及準備工作 325
7.6.2 創建項目及場景搭建 326
7.6.3 著色器及相關腳本的開發 327
7.6.4 結點對象的創建及相關腳本
的開發 332
7.7 本章小結 335
第8章 3D遊戲開發的常用技術 337
8.1 天空盒的套用 337
8.1.1 Unity天空盒資源 337
8.1.2 開發實際需要的天空盒 339
8.2 3D拾取技術 340
8.3 視頻貼圖 343
8.3.1 基礎知識 343
8.3.2 視頻貼圖案例 343
8.4 動態字型 346
8.5 重力加速度感測器 347
8.6 PlayerPrefs類 349
8.7 虛擬按鈕與搖桿的使用 350
8.7.1 下載並導入標準資源包 351
8.7.2 虛擬按鈕和搖桿使用的
案例 351
8.8 聲音 353
8.8.1 聲音類型 353
8.8.2 音頻管理器—AudioManager 354
8.8.3 音頻監聽器—Audio Listener 354
8.8.4 音頻源—Audio Source 355
8.8.5 音頻效果—Audio Effects 357
8.8.6 音頻混響區—Audio Reverb Zones 360
8.8.7 簡單的聲音控制案例 361
8.8.8 混音器—AudioMixer 362
8.9 水特效 367
8.9.1 基礎知識 367
8.9.2 案例 368
8.10 霧特效 370
8.10.1 案例效果與基本原理 370
8.10.2 場景搭建及開發步驟 370
8.11 本章小結 373
第9章 光影效果的使用 375
9.1 光源 375
9.1.1 點光源(Point Light) 375
9.1.2 定向光源
(Directional Light) 377
9.1.3 聚光燈光源(Spot Light) 377
9.1.4 區域光光源(Area Light) 378
9.1.5 發光材質 378
9.2 光照貼圖的烘焙與使用 379
9.2.1 對場景進行光照烘焙 379
9.2.2 光照烘焙參數詳解 380
9.3 法線貼圖 383
9.3.1 在Unity中使用法線貼圖 383
9.3.2 如何在3D Max中製作法線
貼圖 386
9.4 鏡子的開發 387
9.4.1 場景的搭建 388
9.4.2 鏡面著色器的開發 391
9.4.3 C#腳本的開發 391
9.5 真實的水面效果開發 394
9.5.1 基本原理 394
9.5.2 場景的搭建 395
9.5.3 C#腳本的開發 396
9.5.4 鏡面著色器的開發 399
9.6 Unity 3D光照系統中的高 級功能 401
9.6.1 渲染路徑與顏色空間 401
9.6.2 Cookies 402
9.6.3 Flare鏡頭光暈 403
9.6.4 Culling Mask光照過濾 404
9.6.5 陰影的設定 404
9.6.6 Light Probes光探頭 406
9.7 Unity 3D 5.0中新增的光照功能
詳解 408
9.7.1 基於物理學的標準著色器 408
9.7.2 反射探頭(Reflection Probe) 411
9.7.3 全局光照技術詳解 415
第 10章 模型與動畫 419
10.1 3D模型導入 419
10.1.1 主流3D建模軟體的介紹 419
10.1.2 Unity與建模軟體單位的比
例關係 420
10.1.3 將3D模型導入Unity 421
10.2 格線Mesh 422
10.2.1 格線過濾器(Mesh Filter) 422
10.2.2 Mesh屬性和方法介紹 423
10.2.3 Mesh的使用 423
10.2.4 使用Mesh使物體變形的一
個簡單案例 424
10.3 第三方切割工具庫Shatter Toolkit
的使用 429
10.3.1 Shatter Toolkit簡介 429
10.3.2 使用Shatter Toolkit的一個簡單案例 430
10.4 舊版動畫系統 438
10.4.1 導入角色動畫資源 438
10.4.2 動畫控制器(Animation) 439
10.4.3 動畫腳本 440
10.4.4 使用舊版動畫系統的簡單
案例 441
10.5 Mecanim動畫系統 444
10.5.1 角色動畫的配置 444
10.5.2 動畫控制器的創建 447
10.5.3 動畫控制器的配置 448
10.5.4 角色動畫的重定向 451
10.5.5 角色動畫的混合—創建動
畫混合樹 453
10.5.6 角色動畫的混合—混合類
型介紹 455
10.5.7 Mecanim中的代碼控制 456
10.5.8 案例分析 461
10.6 本章小結 464
第 11章 地形與尋路技術 465
11.1 地形引擎 465
11.1.1 地形的創建 465
11.1.2 灰度圖的使用 469
11.2 拖尾渲染器—Trail Renderer 471
11.2.1 背景介紹 471
11.2.2 拖尾渲染器屬性介紹 471
11.2.3 拖尾渲染器的使用 472
11.2.4 產生汽車輪胎拖痕案例 472
11.2.5 產生汽車剎車痕案例 474
11.3 自動尋路技術 476
11.3.1 基礎知識 476
11.3.2 一個簡單的案例 477
11.4 本章小結 481
第 12章 遊戲資源更新 483
12.1 AssetBundle資源包 483
12.1.1 AssetBundle簡介 483
12.1.2 創建AssetBundle 483
12.1.3 AssetBundle的下載 486
12.1.4 AssetBundle的載入和
卸載 488
12.1.5 關於AssetBundle 489
12.1.6 本節小結 491
12.2 Lua熱更新 491
12.2.1 熱更新的基本介紹 491
12.2.2 Lua的基本情況介紹 491
12.2.3 SimpleFramework框架
介紹 492
12.2.4 熱更新案例 493
12.2.5 本節小結 498
12.3 本章小結 498
第 13章 多執行緒技術與網路開發 499
13.1 多執行緒技術 499
13.1.1 基本知識 499
13.1.2 多執行緒技術用於大量
計算 501
13.1.3 多執行緒技術在網路開發中的
套用 503
13.2 WWW類 506
13.2.1 用WWW類訪問網路
資源 506
13.2.2 場景搭建 506
13.2.3 C#腳本的編寫 507
13.3 網路類—Network 507
13.3.1 靜態變數 507
13.3.2 靜態方法 510
13.3.3 訊息傳送 515
13.4 基於Unity Network開發網路
遊戲 516
13.4.1 非授權伺服器和授權
伺服器 516
13.4.2 Network View 網路視圖
組件 517
13.4.3 案例的效果預覽 517
13.4.4 案例場景的搭建 517
13.4.5 項目主體腳本的開發 520
13.4.6 伺服器和客戶端的發布 525
13.5 基於Socket開發Unity網路遊戲 525
13.5.1 網路遊戲架構簡介 526
13.5.2 案例的效果預覽與資源
準備 527
13.5.3 案例場景的搭建 528
13.5.4 伺服器端的開發 531
13.5.5 客戶端的開發 532
13.6 本章小結 540
第 14章 Unity 2D遊戲開發 541
14.1 Unity 2D基礎介紹 541
14.1.1 Unity 2D項目的創建 541
14.1.2 Unity 2D功能簡要介紹 542
14.1.3 Unity 2D遊戲開發工作流程
的簡要介紹 542
14.2 Unity 2D核心功能對象—Sprite 543
14.2.1 Sprite對象的創建和基本
用法 543
14.2.2 換幀動畫的製作 544
14.2.3 製作換幀動畫的具體步驟 545
14.3 Unity 2D中的物理引擎 549
14.3.1 2D剛體 549
14.3.2 2D碰撞器 552
14.3.3 2D關節 554
14.3.4 使用2D物理引擎製作撞冰
塊案例 557
14.4 一個完整的2D遊戲案例 563
14.4.1 遊戲玩法以及功能概述 563
14.4.2 遊戲的策劃及準備工作 564
14.4.3 遊戲的架構 565
14.4.4 選單場景 566
14.4.5 遊戲場景 568
14.5 本章小結 574
第 15章 常用性能最佳化技術 575
15.1 程式性能的分析 575
15.1.1 Profiler使用方法 575
15.1.2 Profiler的參數說明 576
15.2 代碼的斷點調試 578
15.2.1 通過MonoDevelop調試 578
15.2.2 Microsoft Visual Studio Tools for Unity的使用 579
15.3 最佳化事項 580
15.3.1 遮擋剔除技術 581
15.3.2 批處理技術 582
15.3.3 移動平台的最佳化技巧 582
15.4 本章小結 583
第 16章 綜合案例—指間足球 585
16.1 背景以及功能概述 585
16.1.1 遊戲背景概述 585
16.1.2 遊戲功能簡介 585
16.2 遊戲的策劃及準備工作 587
16.2.1 遊戲的策劃 587
16.2.2 使用Unity開發遊戲前的準
備工作 587
16.3 遊戲的架構 590
16.3.1 各個場景的簡要介紹 590
16.3.2 遊戲架構簡介 591
16.4 遊戲主場景 592
16.4.1 場景搭建 592
16.4.2 主攝像機設定及腳本開發 596
16.4.3 守門員遊戲對象相關腳本
開發 602
16.4.4 檢測板遊戲對象相關腳本
開發 603
16.4.5 提示板遊戲對象相關腳本的開發 605
16.4.6 門框遊戲對象相關腳本的
開發 606
16.4.7 其他腳本的開發 607
16.5 遊戲界面的開發 611
16.5.1 主選單界面的搭建 611
16.5.2 主選單界面監聽腳本的
開發 615
16.5.3 遊戲界面的搭建 621
16.5.4 遊戲界面監聽腳本的開發 622
16.5.5 遊戲暫停界面監聽腳本的
開發 625
16.6 遊戲的最佳化與改進 626