內容簡介
隨著Unity 3D的迅猛發展,該遊戲引擎通過不斷最佳化與改進已經升級到4.0。在Unity 4.0中增加了許多新的特性,如全新的動畫系統、支持移動平采多說拜台的實時陰影、**新的狀態機技術等。《Unity 4 3D開發實戰詳解》隨著遊戲引擎的升級加入了許多新的內容,主要內容如下。艱滲院
第 1章 Unity 3D基礎以及開發環境的搭建,簡要介紹了Unity 3D開發環境的搭建及其運行機制;第 2章 Unity集成開發環境詳解,主要對Unity集成開發環境進行詳細介紹;第3章 Unity 3D開發腳本簡介,講解了特定於Unity的JavaScript腳本和C#腳本編寫的語法和技巧;第4章 Unity 3D
圖形用戶界面基礎及常用對象,主要對Unity開發過程中經常使用的圖形用戶界面控制項及對象進行詳細介紹;第5章 Unity 3D第三方2D組件庫——NGUI,介紹了遊戲開發中非常流行的第三方UI界面開發組件庫——NGUI的知識;第6章 物理引擎,介紹了Unity開兵凳發平台的完整的物理引擎體系,包括剛體、碰撞器、粒子系統及關節等開發技術;第7章 3D遊戲開發技術,介紹了天空盒、虛擬按鈕與搖桿、聲音、光源、地形引擎、角色動畫,以及角色控制器等常用技術;第8章 著色器——Shaders,介紹了Unity中的著色器和著色器語言——ShaderLab,為各種高級特效的開發打下良好的基礎;第9章雜項,介紹了PlayerPrefs類、Network Class(網路類)、加速度感測器的使用、視頻貼圖等開發技巧;第 10章 綜合案例——火力籃球,詳細介紹了火力籃球項目的開發過程及用到的各種相關技術;第 11章 綜合案例——3D保齡球,詳細介紹了3D保齡球項目的開發過程及用到的各種相關技術。
《Unity 4 3D開發實戰詳解》適合遊戲開發的讀者學習,也適合程式設計師學習用書,以及各院校相關專業師生的學習用書和培訓學校的教材。
圖書目錄
第 1章 Unity 3D基礎以及開發環境的搭建 1
1.1 Unity 3D基礎知識概覽 1
1.1.1 初識Unity 3D 漏海連1
1.1.2 Unity的誕生及發展 1
1.1.3 Unity 3D廣闊的市場前景 2
1.1.4 獨具特色的Unity 3D 2
1.2 開發環境的搭建 7
1.2.1 Unity集成開發環境的安裝 7
1.2.2 目標平台的SDK與Unity 3D的集成 11
1.3 第 一個Unity 3D程式 15
1.4 導入案例項目 21
1.5 本章小結 22
第 2章 Unity集成開發環境詳解 23
2.1 Unity集成開發環境的整體布局 23
2.1.1 Unity集成開發環境的整體布局 23
2.1.2 標題欄 23
2.1.3 選單欄 24
2.1.4 鞏歡立工具列 24
2.1.5 場景設計面板 25
2.1.6 遊戲預覽面板 多主故背29
2.1.7 遊戲組成對象列表 30
2.1.8 項目資源列表 31
2.1.9 屬性查看器 32
2.1.10 狀態欄與控制台 33
2.1.11 動畫視圖 33
2.2 選單欄 34
2.2.1 檔案(File) 34
2.2.2 編輯(Edit) 36
2.2.3 資源(Assets) 41
2.2.4 遊戲對象(GameObject) 52
2.2.5 組件(Component) 60
2.2.6 地形(Terrain) 63
2.2.7 視窗(Window) 64
2.2.8 幫助(Help) 69
2.3 本章小結 72
第3章 Unity 3D腳本程式開發 73
3.1 Unity腳本概述 73
3.2 Unity中專捆祖淋用JavaScript與通用JavaScript的區別 73
3.2.1 在運行過程中性能的差異 73
3.2.2 在語法上的區別 74
3.3 使用C#腳本的注意事項 76
3.4 Unity腳本的基本語法 77
3.4.1 常用操作 77
3.4.2 記錄時間 78
3.4.3 訪問其他組件 79
3.4.4 訪問其他遊戲對象 81
3.4.5 向量 85
3.4.6 成員變數和全局變數 86
3.4.7 實例化 87
3.4.8 協同程式和中斷 88
3.4.9 一些重要的類 90
3.4.10 性能最佳化 93
3.4.11 腳本編譯 94
3.4.12 泛化方法 95
3.5 JavaScript腳本綜合案例 95
3.5.1 球轉場景實現 96
3.5.2 球走場景實現 100
3.6 C#腳本綜合案例 103
3.6.1 立方體旋轉場景實現 103
3.6.2 球走場景實現 106
3.7 本章小結 107
4.1 圖形用戶界面組件 108
4.1.1 圖形用戶界面組件的變數 108
4.1.2 圖形用戶界面中的常用控制項 115
4.1.3 圖形用戶界面控制項綜合案例 139
4.2 預製件prefab資源的套用 143
4.2.1 預製件prefab資源的創建 143
4.2.2 通過prefab資源進而實例化對象 144
4.3 常用的輸入對象 145
4.3.1 Touch輸入對象 146
4.3.2 Input輸入對象 147
4.4 與銷毀相關的方法 154
4.4.1 Object.Destroy方法 154
4.4.2 Network.Destroy方法 155
4.4.3 EditorWindow.OnDestroy方法 155
4.4.4 MonoBehaviour.OnDestory方法 156
4.4.5 ScriptableObject.OnDestory方法 156
4.4.6 Object.DestoryImmediate方法 156
4.5 本章小結 157
第5章 Unity 3D第三方2D組件庫——NGUI 158
5.1 初識NGUI 158
5.1.1 NGUI背景概述 158
5.1.2 NGUI的導入 159
5.1.3 NGUI選單 160
5.1.4 UI層簡介 162
5.2 控制項工具的使用 164
5.2.1 文本標籤——Label 164
5.2.2 圖片精靈——Sprite 166
5.2.3 按鈕——Button 168
5.2.4 複選框——Checkbox 171
5.2.5 滑塊——Slider 174
5.2.6 文本輸入框——Input 177
5.2.7 彈出列表——Popup List 180
5.3 雜項 184
5.3.1 Atlas圖集製作 184
5.3.2 中文字型製作 187
5.3.3 法線貼圖與動畫曲線編輯 189
5.4 一個NGUI的綜合案例 192
5.4.1 製作布局界面 192
5.4.2 實現視窗的拖曳和動態效果 197
5.4.3 製作燈光效果 200
5.5 本章小結 204
第6章 物理引擎 205
6.1 剛體 205
6.1.1 剛體特性 205
6.1.2 物理管理器 209
6.1.3 碰撞與休眠 212
6.2 碰撞器 213
6.2.1 碰撞器的添加 214
6.2.2 碰撞過濾 218
6.2.3 物理材質 223
6.3 粒子系統 224
6.3.1 粒子系統的簡介 225
6.3.2 粒子系統的特性 226
6.3.3 粒子系統的組合使用 228
6.4 關節 231
6.4.1 鉸鏈關節的特性 231
6.4.2 鉸鏈關節的創建 233
6.4.3 固定關節的特性 235
6.4.4 固定關節的創建 235
6.4.5 彈簧關節的特性 236
6.4.6 彈簧關節的創建 236
6.4.7 角色關節的特性 237
6.4.8 角色關節的創建 237
6.4.9 可配置關節的特性 238
6.4.10 可配置關節的創建 243
6.4.11 關節綜合案例——機械手 244
6.5 交通工具 249
6.6 布料 257
6.6.1 布料特性 258
6.6.2 布料的簡單案例 263
6.7 物理引擎綜合案例 265
6.8 本章小結 274
第7章 3D遊戲開發的常用技術 275
7.1 天空盒的套用 275
7.1.1 Unity內置的天空盒資源 275
7.1.2 開發實際需要的天空盒 277
7.2 虛擬按鈕與搖桿使用 279
7.2.1 Unity內置的虛擬按鈕與搖桿資源 279
7.2.2 虛擬按鈕與搖桿使用的案例 280
7.3 聲音 283
7.3.1 音頻管理器(AudioManager) 284
7.3.2 音頻監聽器(Audio Listener) 284
7.3.3 音頻源(Audio Source) 285
7.3.4 音頻效果(Audio Effects) 287
7.3.5 音頻混響區(Audio Reverb Zones) 290
7.3.6 簡單的聲音控制案例 291
7.4 光源 292
7.4.1 點光源(Point light) 292
7.4.2 平行光光源(Directional light) 294
7.4.3
聚光燈光源(Spotlight) 295
7.4.4 區域光光源(Area Light) 296
7.4.5 光照過濾 297
7.5 3D拾取技術 298
7.6 地形引擎 301
7.6.1 創建地形 301
7.6.2 編輯地形 302
7.6.3 添加樹木和草 306
7.6.4 添加水 309
7.6.5 地形參數 309
7.7 角色動畫 310
7.7.1 導入角色動畫 310
7.7.2 動畫腳本 311
7.7.3 狀態機動畫系統(Mecanim) 312
7.8 角色控制器 317
7.8.1 添加角色控制器 317
7.8.2 角色控制器的使用 318
7.8.3 角色導入案例 318
7.9 實時陰影技術 322
7.10 本章小結 324
第8章 著色器——Shaders 325
8.1 著色器概述 325
8.2 ShaderLab語法基礎 326
8.2.1 Shader 326
8.2.2 Properties 326
8.2.3 SubShader 327
8.2.4 SubShader Tags 327
8.2.5 Pass 328
8.2.6 Fallback 330
8.2.7 Category 330
8.3 通道渲染命令(ShaderLab) 330
8.3.1 顏色、材質和光照 330
8.3.2 剪裁和深度測試 332
8.3.3 紋理處理 333
8.3.4 霧 335
8.3.6 混合 337
8.3.7 通道標籤 338
8.3.8 綁定通道 339
8.4 表面著色器的基礎知識 339
8.5 通過表面著色器實施頂點變換 342
8.5.1 二維變形 342
8.5.2 扭扭糖 345
8.5.3 吹氣膨脹效果 348
8.6 通過表面著色器實施片元變換 350
8.6.1 沙灘球 350
8.6.2 磚塊球 354
8.7 頂點片元著色器 358
8.7.1 頂點片元著色器的基礎知識 358
8.7.2 帶光照的沙灘球 359
8.8 本章小結 363
第9章 雜項 364
9.1 PlayerPrefs類 364
9.2 網路——Network 366
9.2.1 訊息傳送——Messages Sent 366
9.2.2 類變數——Class Variables 369
9.2.3 類方法——Class Functions 375
9.4 模型導入 385
9.5 動態字型 386
9.6 視頻貼圖 388
9.6.1 基礎知識 388
9.6.2 案例 388
9.7 本章小結 390
第 10章 綜合案例——火力籃球 391
10.1 火力藍球遊戲背景以及功能概述 391
10.1.1 火力藍球遊戲背景概述 391
10.1.2 火力藍球功能簡介 391
10.2 遊戲的策劃及準備工作 393
10.2.1 遊戲的策劃 393
10.2.2 使用Unity開發遊戲前的準備工作 393
10.3 遊戲的架構 395
10.3.1 各個場景的簡要介紹 395
10.3.2 遊戲架構簡介 397
10.4 主選單界面 398
10.5 遊戲界面 402
10.5.1 場景搭建 402
10.5.2 籃球及其腳本 409
10.5.3 計分觸發器開發 413
10.5.4 主攝像機設定及腳本開發 416
10.6 設定界面 417
10.7 關於界面 420
10.8 幫助界面 421
10.8.1 場景搭建 421
10.8.2 籃球腳本開發 422
10.8.3 計分觸發器的腳本開發 424
10.8.4 主攝像機腳本開發 426
10.9 記錄界面 428
10.10 遊戲結束界面 432
10.11 遊戲的最佳化與改進 433
第 11章 綜合案例——3D保齡球 434
11.1 3D保齡球遊戲背景及功能概述 434
11.1.1 3D保齡球背景概述 434
11.1.2 3D保齡球功能簡介 434
11.2 遊戲的策劃及準備工作 436
11.2.1 遊戲的策劃 436
11.2.2 使用Unity開發遊戲前的準備工作 436
11.3 遊戲的架構 439
11.3.1 各個場景的簡要介紹 439
11.3.2 遊戲架構簡介 441
11.4 主選單界面 442
1.5 遊戲界面 448
11.5.1 場景搭建 448
11.5.2 保齡球瓶及其腳本 451
11.5.3 初始化與得分計算 454
11.5.4 瓶子碰撞體的組裝 460
11.5.5 得分的繪製,儲存和返回鍵的開發 462
11.5.6 瓶子下降和下降台控制 465
11.6 設定界面 466
11.7 統計界面 469
11.8 幫助界面 473
11.9 遊戲結束界面 476
11.10 遊戲的最佳化與改進 478
2.1.4 工具列 24
2.1.5 場景設計面板 25
2.1.6 遊戲預覽面板 29
2.1.7 遊戲組成對象列表 30
2.1.8 項目資源列表 31
2.1.9 屬性查看器 32
2.1.10 狀態欄與控制台 33
2.1.11 動畫視圖 33
2.2 選單欄 34
2.2.1 檔案(File) 34
2.2.2 編輯(Edit) 36
2.2.3 資源(Assets) 41
2.2.4 遊戲對象(GameObject) 52
2.2.5 組件(Component) 60
2.2.6 地形(Terrain) 63
2.2.7 視窗(Window) 64
2.2.8 幫助(Help) 69
2.3 本章小結 72
第3章 Unity 3D腳本程式開發 73
3.1 Unity腳本概述 73
3.2 Unity中專用JavaScript與通用JavaScript的區別 73
3.2.1 在運行過程中性能的差異 73
3.2.2 在語法上的區別 74
3.3 使用C#腳本的注意事項 76
3.4 Unity腳本的基本語法 77
3.4.1 常用操作 77
3.4.2 記錄時間 78
3.4.3 訪問其他組件 79
3.4.4 訪問其他遊戲對象 81
3.4.5 向量 85
3.4.6 成員變數和全局變數 86
3.4.7 實例化 87
3.4.8 協同程式和中斷 88
3.4.9 一些重要的類 90
3.4.10 性能最佳化 93
3.4.11 腳本編譯 94
3.4.12 泛化方法 95
3.5 JavaScript腳本綜合案例 95
3.5.1 球轉場景實現 96
3.5.2 球走場景實現 100
3.6 C#腳本綜合案例 103
3.6.1 立方體旋轉場景實現 103
3.6.2 球走場景實現 106
3.7 本章小結 107
4.1 圖形用戶界面組件 108
4.1.1 圖形用戶界面組件的變數 108
4.1.2 圖形用戶界面中的常用控制項 115
4.1.3 圖形用戶界面控制項綜合案例 139
4.2 預製件prefab資源的套用 143
4.2.1 預製件prefab資源的創建 143
4.2.2 通過prefab資源進而實例化對象 144
4.3 常用的輸入對象 145
4.3.1 Touch輸入對象 146
4.3.2 Input輸入對象 147
4.4 與銷毀相關的方法 154
4.4.1 Object.Destroy方法 154
4.4.2 Network.Destroy方法 155
4.4.3 EditorWindow.OnDestroy方法 155
4.4.4 MonoBehaviour.OnDestory方法 156
4.4.5 ScriptableObject.OnDestory方法 156
4.4.6 Object.DestoryImmediate方法 156
4.5 本章小結 157
第5章 Unity 3D第三方2D組件庫——NGUI 158
5.1 初識NGUI 158
5.1.1 NGUI背景概述 158
5.1.2 NGUI的導入 159
5.1.3 NGUI選單 160
5.1.4 UI層簡介 162
5.2 控制項工具的使用 164
5.2.1 文本標籤——Label 164
5.2.2 圖片精靈——Sprite 166
5.2.3 按鈕——Button 168
5.2.4 複選框——Checkbox 171
5.2.5 滑塊——Slider 174
5.2.6 文本輸入框——Input 177
5.2.7 彈出列表——Popup List 180
5.3 雜項 184
5.3.1 Atlas圖集製作 184
5.3.2 中文字型製作 187
5.3.3 法線貼圖與動畫曲線編輯 189
5.4 一個NGUI的綜合案例 192
5.4.1 製作布局界面 192
5.4.2 實現視窗的拖曳和動態效果 197
5.4.3 製作燈光效果 200
5.5 本章小結 204
第6章 物理引擎 205
6.1 剛體 205
6.1.1 剛體特性 205
6.1.2 物理管理器 209
6.1.3 碰撞與休眠 212
6.2 碰撞器 213
6.2.1 碰撞器的添加 214
6.2.2 碰撞過濾 218
6.2.3 物理材質 223
6.3 粒子系統 224
6.3.1 粒子系統的簡介 225
6.3.2 粒子系統的特性 226
6.3.3 粒子系統的組合使用 228
6.4 關節 231
6.4.1 鉸鏈關節的特性 231
6.4.2 鉸鏈關節的創建 233
6.4.3 固定關節的特性 235
6.4.4 固定關節的創建 235
6.4.5 彈簧關節的特性 236
6.4.6 彈簧關節的創建 236
6.4.7 角色關節的特性 237
6.4.8 角色關節的創建 237
6.4.9 可配置關節的特性 238
6.4.10 可配置關節的創建 243
6.4.11 關節綜合案例——機械手 244
6.5 交通工具 249
6.6 布料 257
6.6.1 布料特性 258
6.6.2 布料的簡單案例 263
6.7 物理引擎綜合案例 265
6.8 本章小結 274
第7章 3D遊戲開發的常用技術 275
7.1 天空盒的套用 275
7.1.1 Unity內置的天空盒資源 275
7.1.2 開發實際需要的天空盒 277
7.2 虛擬按鈕與搖桿使用 279
7.2.1 Unity內置的虛擬按鈕與搖桿資源 279
7.2.2 虛擬按鈕與搖桿使用的案例 280
7.3 聲音 283
7.3.1 音頻管理器(AudioManager) 284
7.3.2 音頻監聽器(Audio Listener) 284
7.3.3 音頻源(Audio Source) 285
7.3.4 音頻效果(Audio Effects) 287
7.3.5 音頻混響區(Audio Reverb Zones) 290
7.3.6 簡單的聲音控制案例 291
7.4 光源 292
7.4.1 點光源(Point light) 292
7.4.2 平行光光源(Directional light) 294
7.4.3
聚光燈光源(Spotlight) 295
7.4.4 區域光光源(Area Light) 296
7.4.5 光照過濾 297
7.5 3D拾取技術 298
7.6 地形引擎 301
7.6.1 創建地形 301
7.6.2 編輯地形 302
7.6.3 添加樹木和草 306
7.6.4 添加水 309
7.6.5 地形參數 309
7.7 角色動畫 310
7.7.1 導入角色動畫 310
7.7.2 動畫腳本 311
7.7.3 狀態機動畫系統(Mecanim) 312
7.8 角色控制器 317
7.8.1 添加角色控制器 317
7.8.2 角色控制器的使用 318
7.8.3 角色導入案例 318
7.9 實時陰影技術 322
7.10 本章小結 324
第8章 著色器——Shaders 325
8.1 著色器概述 325
8.2 ShaderLab語法基礎 326
8.2.1 Shader 326
8.2.2 Properties 326
8.2.3 SubShader 327
8.2.4 SubShader Tags 327
8.2.5 Pass 328
8.2.6 Fallback 330
8.2.7 Category 330
8.3 通道渲染命令(ShaderLab) 330
8.3.1 顏色、材質和光照 330
8.3.2 剪裁和深度測試 332
8.3.3 紋理處理 333
8.3.4 霧 335
8.3.6 混合 337
8.3.7 通道標籤 338
8.3.8 綁定通道 339
8.4 表面著色器的基礎知識 339
8.5 通過表面著色器實施頂點變換 342
8.5.1 二維變形 342
8.5.2 扭扭糖 345
8.5.3 吹氣膨脹效果 348
8.6 通過表面著色器實施片元變換 350
8.6.1 沙灘球 350
8.6.2 磚塊球 354
8.7 頂點片元著色器 358
8.7.1 頂點片元著色器的基礎知識 358
8.7.2 帶光照的沙灘球 359
8.8 本章小結 363
第9章 雜項 364
9.1 PlayerPrefs類 364
9.2 網路——Network 366
9.2.1 訊息傳送——Messages Sent 366
9.2.2 類變數——Class Variables 369
9.2.3 類方法——Class Functions 375
9.4 模型導入 385
9.5 動態字型 386
9.6 視頻貼圖 388
9.6.1 基礎知識 388
9.6.2 案例 388
9.7 本章小結 390
第 10章 綜合案例——火力籃球 391
10.1 火力藍球遊戲背景以及功能概述 391
10.1.1 火力藍球遊戲背景概述 391
10.1.2 火力藍球功能簡介 391
10.2 遊戲的策劃及準備工作 393
10.2.1 遊戲的策劃 393
10.2.2 使用Unity開發遊戲前的準備工作 393
10.3 遊戲的架構 395
10.3.1 各個場景的簡要介紹 395
10.3.2 遊戲架構簡介 397
10.4 主選單界面 398
10.5 遊戲界面 402
10.5.1 場景搭建 402
10.5.2 籃球及其腳本 409
10.5.3 計分觸發器開發 413
10.5.4 主攝像機設定及腳本開發 416
10.6 設定界面 417
10.7 關於界面 420
10.8 幫助界面 421
10.8.1 場景搭建 421
10.8.2 籃球腳本開發 422
10.8.3 計分觸發器的腳本開發 424
10.8.4 主攝像機腳本開發 426
10.9 記錄界面 428
10.10 遊戲結束界面 432
10.11 遊戲的最佳化與改進 433
第 11章 綜合案例——3D保齡球 434
11.1 3D保齡球遊戲背景及功能概述 434
11.1.1 3D保齡球背景概述 434
11.1.2 3D保齡球功能簡介 434
11.2 遊戲的策劃及準備工作 436
11.2.1 遊戲的策劃 436
11.2.2 使用Unity開發遊戲前的準備工作 436
11.3 遊戲的架構 439
11.3.1 各個場景的簡要介紹 439
11.3.2 遊戲架構簡介 441
11.4 主選單界面 442
1.5 遊戲界面 448
11.5.1 場景搭建 448
11.5.2 保齡球瓶及其腳本 451
11.5.3 初始化與得分計算 454
11.5.4 瓶子碰撞體的組裝 460
11.5.5 得分的繪製,儲存和返回鍵的開發 462
11.5.6 瓶子下降和下降台控制 465
11.6 設定界面 466
11.7 統計界面 469
11.8 幫助界面 473
11.9 遊戲結束界面 476
11.10 遊戲的最佳化與改進 478