Unity 3D游戲開發(第3版)( 簡體 字) | |
作者:宣雨松 | 類別:1. -> 多媒體 -> 遊戲引擎 -> Unity |
出版社:人民郵電出版社 | 3dWoo書號: 56313 詢問書籍請說出此書號! 缺書 NT售價: 650 元 |
出版日:10/1/2023 | |
頁數:778 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787115624680 | 【不接受訂購】 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第 一部分 基礎篇
第 1章 基礎知識 2 1.1 Unity簡介 2 1.2 跨平臺 2 1.3 協作開發 3 1.4 Unity版本 4 1.5 Package Manager 5 1.6 示例項目與發布 7 1.7 Unity服務 8 1.8 小結 9 第 2章 編輯器的結構 10 2.1 Unity Hub 10 2.2 編輯器布局 11 2.3 Project視圖 12 2.4 Hierarchy視圖 13 2.5 Inspector視圖 14 2.6 Scene視圖 15 2.7 Game視圖 16 2.8 導航欄視圖 17 2.9 小結 17 第3章 游戲腳本 18 3.1 C#運行時 18 3.2 C#與引擎交互 22 3.3 游戲對象 27 3.4 游戲組件 29 3.4.1 Transform(變換)組件 29 3.4.2 Mesh Filter(網格過濾器)組件 30 3.4.3 Mesh Renderer(網格渲染)組件 31 3.4.4 Skinned Mesh Renderer(蒙皮網格渲染)組件 32 3.5 游戲腳本 35 3.6 腳本的生命周期 35 3.6.1 初始化和銷毀 37 3.6.2 二次初始化 38 3.6.3 固定更新 39 3.6.4 內置協程回調 43 3.6.5 鼠標事件 45 3.6.6 腳本邏輯更新 46 3.6.7 場景渲染 47 3.6.8 編輯器UI 更新 48 3.7 腳本的管理 50 3.7.1 腳本的執行順序 50 3.7.2 多腳本優化 51 3.8 腳本序列化 52 3.8.1 查看數據 53 3.8.2 序列化數據標簽 54 3.8.3 SerializedObject 55 3.8.4 監聽修改事件 56 3.8.5 序列化/反序列化監聽 58 3.8.6 序列化嵌套 60 3.8.7 序列化引用 61 3.8.8 序列化繼承 62 3.8.9 ScriptableObject 63 3.9 腳本屬性 65 3.9.1 序列化屬性 65 3.9.2 Header屬性 66 3.9.3 編輯模式下執行腳本 66 3.9.4 枚舉序列化別名 67 3.9.5 必須包含的組件 68 3.9.6 其他UI擴展面板 68 3.9.7 可選擇屬性 69 3.9.8 自定義屬性 69 3.10 協程任務 70 3.10.1 異步代碼流程 71 3.10.2 當前幀最后執行 71 3.10.3 定時器 73 3.10.4 CustomYieldInstruction 75 3.10.5 Awaitable 76 3.11 通過腳本操作對象和組件 78 3.11.1 對象的創建與刪除 78 3.11.2 對象層級排序 80 3.11.3 對象子節點的獲取 80 3.11.4 多場景根節點 81 3.11.5 腳本的添加與刪除 82 3.11.6 DontDestroyOnLoad 83 3.12 調試 83 3.13 小結 85 第4章 UGUI 86 4.1 游戲界面 86 4.1.1 Text組件 86 4.1.2 富文本 89 4.1.3 描邊和陰影 91 4.1.4 動態字體 92 4.1.5 字體花屏 93 4.1.6 Text Mesh Pro 94 4.1.7 SDF字體 97 4.1.8 圖文混排 99 4.1.9 樣式 101 4.1.10 文字fallback 103 4.1.11 點擊事件 104 4.1.12 Image組件 105 4.1.13 Raw Image組件 107 4.1.14 Button組件 109 4.1.15 Toggle組件 110 4.1.16 Scroll View組件 111 4.1.17 其他組件 113 4.2 界面布局 114 4.2.1 Rect Transform組件 114 4.2.2 拉伸 117 4.2.3 自動布局 118 4.2.4 文本自適應 120 4.2.5 Layout Element組件 121 4.2.6 Layout Group組件 122 4.2.7 Content Size Fitter組件 123 4.3 Canvas組件 126 4.3.1 UI攝像機 126 4.3.2 3D界面 128 4.3.3 自適應UI 130 4.3.4 Canvas與3D排序 133 4.3.5 裁剪 135 4.3.6 裁剪粒子 136 4.4 Atlas 137 4.4.1 創建Atlas 138 4.4.2 讀取Atlas 139 4.4.3 Variant 140 4.4.4 監聽加載事件 140 4.4.5 多圖集管理 141 4.5 事件系統 141 4.5.1 Graphic Raycaster組件 142 4.5.2 UI事件 143 4.5.3 UI事件管理 144 4.5.4 UnityAction和UnityEvent 146 4.5.5 C#事件系統 147 4.5.6 3D事件 148 4.5.7 K幀動畫 149 4.5.8 使用Scroll Rect組件制作游戲搖桿 150 4.5.9 點擊區域優化 151 4.5.10 顯示幀率 152 4.5.11 查看UGUI源代碼 153 4.6 小結 153 第5章 UI Toolkit 154 5.1 UI Toolkit簡介 154 5.2 UI Builder編輯器 154 5.2.1 StyleSheets視圖 156 5.2.2 Hierarchy視圖 159 5.2.3 Library視圖 161 5.2.4 Viewport視圖 162 5.2.5 Inspector視圖 64 5.3 UI組件 180 5.3.1 Text組件 181 5.3.2 Visual Element組件 183 5.3.3 其他UI組件 184 5.3.4 基礎容器 185 5.3.5 ScrollView組件 186 5.3.6 ListView組件 188 5.3.7 ListView事件 190 5.3.8 TreeView組件 191 5.3.9 GroupBox組件 192 5.3.10 控制組件 192 5.3.11 加載與嵌套 195 5.3.12 自適應UI 196 5.3.13 動態圖集 198 5.3.14 自定義UI組件 199 5.4 事件系統 200 5.4.1 點擊事件 200 5.4.2 焦點事件 201 5.4.3 鍵盤事件 202 5.4.4 拖動事件 202 5.5 進階技巧 203 5.5.1 3D與2D坐標轉換 203 5.5.2 覆蓋樣式 204 5.5.3 多樣式管理 206 5.5.4 調試 207 5.5.5 編輯器窗口面板 208 5.5.6 編輯器腳本面板 209 5.5.7 編輯器組合面板 210 5.5.8 布局與裁剪 211 5.5.9 與UGUI混合使用 213 5.5.10 UI動畫 213 5.6 UI Toolkit渲染 214 5.6.1 IMGUI 214 5.6.2 UGUI 214 5.6.3 圖集 214 5.6.4 UI Toolkit與UGUI的比較 216 5.7 UI Toolk學習資料 217 5.8 小結 218 第6章 2D游戲開發 219 6.1 Sprite Renderer組件 220 6.1.1 渲染原理 222 6.1.2 渲染排序 224 6.1.3 裁剪 226 6.1.4 2D幀動畫 227 6.1.5 腳本播放動畫 231 6.1.6 2D骨骼動畫 232 6.1.7 IK反向運動 238 6.1.8 精靈資源庫 239 6.2 Tile地圖 241 6.2.1 創建Tile 242 6.2.2 創建地圖 243 6.2.3 編輯Tile 245 6.2.4 Tile排序 247 6.2.5 擴展筆刷 248 6.2.6 擴展Tile 251 6.2.7 更新Tile 252 6.2.8 Tile動畫 253 6.3 2D物理系統 254 6.3.1 Collider 2D組件 254 6.3.2 Rigidbody 2D組件 255 6.3.3 碰撞事件 257 6.3.4 碰撞方向 259 6.3.5 觸發器監聽 261 6.3.6 復合碰撞體 262 6.3.7 自定義碰撞體 263 6.3.8 Effectors 2D組件 264 6.3.9 關節 264 6.3.10 物理材質和恒定力 264 6.3.11 計算區域 265 6.4 像素風 265 6.5 精靈形狀 267 6.6 精靈編輯器 268 6.7 小結 270 第7章 3D游戲開發 271 7.1 Renderer 271 7.1.1 Mesh Renderer(網格渲染器) 271 7.1.2 Skinned Mesh Renderer(蒙皮網格渲染器) 273 7.1.3 Particle System(粒子系統) 275 7.1.4 Trail Renderer(拖尾渲染器) 276 7.1.5 Line Renderer(線渲染器) 276 7.1.6 Terrain(地形) 277 7.2 游戲對象和資源 278 7.2.1 靜態對象 278 7.2.2 標記 279 7.2.3 層 280 7.2.4 Prefab 280 7.2.5 Prefab嵌套 282 7.2.6 Prefab和游戲對象 285 7.2.7 實例化 286 7.2.8 游戲資源 287 7.2.9 場景 289 7.2.10 場景模板 291 7.3 動畫系統 293 7.3.1 動畫文件 293 7.3.2 制作動畫 296 7.3.3 動畫事件 297 7.3.4 骨骼動畫優化 298 7.3.5 播放動畫 300 7.3.6 切換動畫 301 7.3.7 動畫混合 302 7.3.8 老版動畫 304 7.3.9 Simple Animation組件 305 7.3.10 控制動畫進度 307 7.3.11 特殊動畫行為 308 7.3.12 Playable組件 309 7.3.13 使用Playable自定義腳本 312 7.3.14 模型換裝 313 7.4 3D物理系統 316 7.4.1 角色控制器 316 7.4.2 碰撞體 319 7.4.3 Rigidbody組件 321 7.4.4 碰撞事件 321 7.4.5 布娃娃系統 323 7.4.6 布料系統 324 7.4.7 其他 325 7.5 輸入系統 325 7.5.1 實體輸入事件 326 7.5.2 虛擬輸入事件 327 7.5.3 鼠標位置 328 7.5.4 點選模型 330 7.5.5 通過點擊控制移動 332 7.5.6 射線 333 7.6 Transform組件 334 7.6.1 控制角色移動 335 7.6.2 攝像機跟隨 336 7.6.3 插值移動 337 7.6.4 約束條件 338 7.7 小結 339 第8章 靜態對象 340 8.1 光照貼圖 341 8.1.1 光源 341 8.1.2 開始烘焙 342 8.1.3 烘焙結果在不同平臺上的差異 346 8.1.4 烘焙貼圖UV 347 8.1.5 光照探針 348 8.1.6 運行時更換烘焙貼圖 349 8.1.7 復制烘焙信息 350 8.1.8 復制工具 351 8.2 反射探針 352 8.3 遮擋剔除 354 8.3.1 遮擋關系 354 8.3.2 遮擋與被遮擋事件 356 8.3.3 動態剔除 356 8.3.4 遮擋剔除的原理 356 8.3.5 裁剪組 357 8.4 靜態合批 358 8.4.1 設置靜態合批 358 8.4.2 腳本靜態合批 360 8.4.3 動態合批 361 8.5 導航網格 361 8.5.1 設置尋路 362 8.5.2 動態阻擋 364 8.5.3 連接兩點 365 8.5.4 連接兩個區域 366 8.5.5 烘焙修改器 366 8.5.6 運行時烘焙 367 8.5.7 獲取尋路路徑 368 8.5.8 導出導航網格信息 369 8.6 小結 372 第9章 持久化數據 373 9.1 Excel 373 9.1.1 EPPlus 374 9.1.2 讀取Excel文件 374 9.1.3 寫入Excel文件 376 9.2 SQLite 377 9.2.1 創建數據庫 378 9.2.2 跨平臺讀取數據庫 379 9.3 JSON 382 9.3.1 JsonUtility 382 9.3.2 JSON支持字典 384 9.3.3 Newtonsoft Json 385 9.4 文件的讀取與寫入 386 9.4.1 PlayerPrefs 386 9.4.2 EditorPrefs 387 9.4.3 用PlayerPrefs保存復雜的數據結構 388 9.4.4 PlayerPrefs版本升級 389 9.4.5 文件讀寫 389 9.4.6 文件流 390 9.4.7 打包后讀寫文本 392 9.4.8 PersistentDataPath目錄 393 9.5 XML 393 9.5.1 創建XML字符串 393 9.5.2 讀取與修改 394 9.5.3 XML文件 395 9.5.4 XML與JSON的轉換 397 9.6 YAML 397 9.6.1 YamlDotNet 398 9.6.2 序列化和反序列化 398 9.7 生成代碼 400 9.7.1 把數據從Excel表導出到數據庫 400 9.7.2 運行時讀取數據 402 9.7.3 RazorEngine 403 9.7.4 生成代碼的條件 404 9.7.5 模板文件 405 9.8 小結 406 第 10章 多媒體 407 10.1 音頻 407 10.1.1 音頻文件 407 10.1.2 Audio Source 408 10.1.3 3D音頻 410 10.1.4 代碼控制播放 411 10.1.5 AudioMixer 412 10.1.6 混音區 414 10.1.7 麥克風 415 10.1.8 聲音進度 416 10.2 視頻 417 10.2.1 視頻文件 417 10.2.2 視頻渲染模式 419 10.2.3 視頻自適應 420 10.2.4 UI覆蓋在視頻之上 421 10.2.5 視頻渲染在材質上 422 10.2.6 視頻渲染在紋理上 422 10.2.7 播放網絡視頻 423 10.2.8 自定義視頻顯示 424 10.2.9 視頻進度 425 10.2.10 下載視頻 425 10.2.11 全景視頻 426 10.3 小結 426 第 11章 Netcode與網絡編程 427 11.1 UnityWebRequest 427 11.1.1 下載文件和上傳文件 428 11.1.2 下載進度與異常 429 11.1.3 驗證文件 431 11.1.4 DownloadHandlerScript 431 11.1.5 控制下載速度 433 11.2 Socket 436 11.2.1 拼接包 439 11.2.2 Protocol Buffer 440 11.3 Netcode 442 11.3.1 托管服務器 443 11.3.2 UNet與Netcode的區別 445 11.3.3 前后端同步 446 11.3.4 軟連接 448 11.3.5 同步坐標 450 11.3.6 服務器RPC 452 11.3.7 客戶端RPC 454 11.3.8 網絡變量 457 11.3.9 網絡場景 459 11.3.10 網絡底層消息 460 11.3.11 FastBufferWriter與FastBufferReader 463 11.3.12 網絡連接事件 464 11.3.13 網絡對象 465 11.3.14 隱藏與顯示 467 11.3.15 前后端時間 468 11.3.16 網絡腳本內置方法 469 11.3.17 前后端打包 469 11.3.18 密碼 472 11.4 小結 474 第二部分 進階篇 第 12章 渲染管線 476 12.1 SRP 476 12.1.1 SRP Core 479 12.1.2 安裝與配置 480 12.1.3 攝像機組件工具 482 12.1.4 Look Dev 483 12.1.5 Render Graph Viewer 484 12.1.6 對URP的展望 485 12.2 URP 489 12.2.1 URP調試與修改 489 12.2.2 URP與內置渲染管線對比 491 12.2.3 升級著色器 503 12.2.4 LightMode 509 12.2.5 Shader Graph 510 12.2.6 Renderer Pipeline Asset 512 12.2.7 Renderer Pipeline Asset Data 516 12.2.8 URP Global Settings 519 12.2.9 URP Renderer Feature 520 12.3 SRP Batch 527 12.3.1 不透明物體繪制 527 12.3.2 半透明物體繪制 528 12.3.3 Early-Z 529 12.3.4 Alpha Test 529 12.3.5 Alpha Blend 530 12.3.6 Set Pass Call與Draw Call 531 12.3.7 SRP Batch原理 534 12.3.8 SRP Batch使用 536 12.4 渲染技術 538 12.4.1 Blinn-Phong光照計算 538 12.4.2 PBR光照計算 540 12.4.3 陰影 543 12.4.4 渲染數據傳遞 546 12.4.5 SRP流程 549 12.4.6 GPU渲染管線 550 12.4.7 SRP裁剪 553 12.4.8 前向渲染流程 554 12.4.9 多攝像機與FinalBlit 557 12.4.10 ScriptableRenderPass 560 12.5 自定義渲染管線 562 12.5.1 參與渲染的對象 562 12.5.2 MVP矩陣計算 563 12.5.3 Render Objects 566 12.5.4 Rendering Layer Mask 568 12.5.5 自定義Render Feature 569 12.5.6 裁剪與層 571 12.5.7 后處理與自定義 573 12.5.8 UI部分模糊 576 12.5.9 降低分辨率不包含UI 576 12.6 小結 578 第 13章 DOTS 1.0 579 13.1 DOTS的組成 579 13.1.1 ECS簡介 581 13.1.2 Job System簡介 583 13.1.3 Burst Compiler簡介 584 13.1.4 安裝 585 13.2 游戲對象轉到ECS 585 13.2.1 傳統的對象與組件 585 13.2.2 Entity(實體)586 13.2.3 Archetype(原型)587 13.2.4 Component(組件)589 13.2.5 System(系統)591 13.3 實體組件 592 13.3.1 非托管組件 592 13.3.2 托管組件 593 13.3.3 共享組件 593 13.3.4 清理組件 594 13.3.5 標記組件 595 13.3.6 動態緩沖組件 595 13.3.7 Chunk組件 596 13.3.8 啟動組件 598 13.4 系統 599 13.4.1 系統組件 600 13.4.2 系統分組與排序 601 13.4.3 系統遍歷 602 13.4.4 系統查詢 603 13.4.5 寫組與版本號 604 13.4.6 SystemAPI.Query 606 13.5 Job 607 13.5.1 線程與同步 608 13.5.2 Job的種類 610 13.5.3 Entity Command Buffers實體緩沖 611 13.6 Burst 612 13.6.1 啟動Burst 613 13.6.2 高性能C# 615 13.6.3 Unity.Mathematics數學庫 617 13.7 渲染 619 13.7.1 自定義材質 620 13.7.2 更換模型材質 621 13.7.3 修改材質屬性 622 13.7.4 GPU Instancing 624 13.7.5 BatchRendererGroup 627 13.7.6 Aspect包裝器 629 13.7.7 調試 630 13.8 小結 634 第 14章 擴展編輯器 635 14.1 擴展Project視圖 635 14.1.1 擴展右鍵菜單 635 14.1.2 創建腳本模板 637 14.1.3 擴展布局 639 14.1.4 監聽資源導入 640 14.1.5 監聽資源修改事件 641 14.1.6 自定義資源導入類型 642 14.2 擴展Hierarchy視圖 643 14.2.1 擴展菜單 643 14.2.2 擴展布局 644 14.2.3 自動選擇游戲對象 645 14.3 擴展Inspector視圖 645 14.3.1 擴展原生組件 646 14.3.2 擴展繼承組件 646 14.3.3 限制組件編輯 648 14.3.4 Context菜單 649 14.4 擴展Scene視圖 650 14.4.1 工具欄擴展 650 14.4.2 輔助元素 651 14.4.3 輔助UI 652 14.4.4 常駐輔助UI 653 14.5 擴展Game視圖 654 14.6 導航欄擴展 654 14.6.1 自定義菜單 655 14.6.2 菜單項自動執行 655 14.6.3 導航條 656 14.6.4 標題欄擴展 657 14.6.5 默認面板 658 14.7 查看源代碼 658 14.8 小結 659 第 15章 資源管理 660 15.1 編輯器模式 660 15.1.1 游戲資源 660 15.1.2 加載資源 661 15.1.3 卸載資源 663 15.1.4 創建與修改資源 663 15.1.5 創建與修改游戲對象 664 15.2 運行模式 665 15.2.1 參與打包的資源 665 15.2.2 Resources 666 15.2.3 通過腳本計算依賴 667 15.2.4 StreamingAssets 668 15.2.5 場景資源 668 15.3 AssetBundle 668 15.3.1 設置AB 669 15.3.2 設置依賴 670 15.3.3 純腳本打包 671 15.3.4 差異打包 672 15.3.5 AB壓縮格式 672 15.3.6 加載AB 673 15.3.7 內存與卸載 674 15.3.8 場景AB 675 15.3.9 CDN下載流程 675 15.3.10 加載流程 676 15.3.11 多進程AB構建 676 15.4 代碼編譯 677 15.4.1 Plugins 677 15.4.2 Assembly 677 15.4.3 Editor 678 15.4.4 IL2CPP 678 15.4.5 AB中的腳本 679 15.4.6 熱更新代碼 680 15.5 Shader(著色器)編譯 682 15.5.1 打包與運行 682 15.5.2 Shader重復打包 682 15.5.3 Shader宏 683 15.5.4 Shader與AB包 686 15.5.5 Shader打包剝離 686 15.6 美術資源管理 688 15.6.1 版本管理 688 15.6.2 材質丟失 689 15.6.3 協作開發與多工程 689 15.6.4 美術資源生成 690 15.7 小結 690 第 16章 自動化與打包 691 16.1 自動化設置資源 691 16.1.1 設置貼圖格式 691 16.1.2 動畫控制器 694 16.1.3 設置模型格式 695 16.1.4 導出動畫文件 695 16.1.5 生成角色Prefab 696 16.1.6 生成場景 697 16.1.7 場景無法保存 699 16.1.8 自動生成UI圖集 699 16.1.9 更換Shader殘留宏 700 16.1.10 自動生成變種收集器 703 16.1.11 剔除頂點色 704 16.2 自動化打包 705 16.2.1 打包過程中的事件 706 16.2.2 打包機的選擇 707 16.2.3 打包后自動壓縮 707 16.2.4 調用shell腳本 708 16.2.5 命令行打開工程 709 16.2.6 腳本化打包參數 711 16.2.7 Jenkins 712 16.3 小結 714 第 17章 代碼優化 715 17.1 Unity代碼優化 715 17.1.1 緩存對象 715 17.1.2 減少腳本 716 17.1.3 減少Update()執行 716 17.1.4 緩存池 717 17.1.5 日志優化 718 17.2 C#代碼優化 719 17.2.1 入棧和出棧 720 17.2.2 值類型和引用類型 721 17.2.3 裝箱和拆箱 722 17.2.4 字符串 723 17.2.5 struct 724 17.2.6 GC 725 17.3 Profiler內存管理 726 17.3.1 內存泄漏 726 17.3.2 耗時函數統計 727 17.3.3 自定義采樣 729 17.3.4 堆內存分配 730 17.3.5 原生內存分配 731 17.3.6 Unity內存 732 17.3.7 Memory Profiler 733 17.3.8 真機Profiler 735 17.3.9 Profiler寫入和讀取 736 17.3.10 渲染性能調試 737 17.4 著色器優化 739 17.4.1 頂點著色器 740 17.4.2 片元著色器 741 17.4.3 條件分支 742 17.5 小結 742 第 18章 通用案例與優化 743 18.1 客戶端框架 743 18.1.1 UI框架 743 18.1.2 UI代碼生成 745 18.1.3 協議代碼生成 746 18.1.4 其他代碼生成 747 18.1.5 數據監聽 747 18.1.6 事件管理器 749 18.2 客戶端優化與案例 752 18.2.1 懶加載 752 18.2.2 懶加載UI 752 18.2.3 懶加載UI 特效 754 18.2.4 編輯與運行時加載資源 756 18.2.5 資源名與路徑 758 18.2.6 異步加載 759 18.2.7 界面返回 760 18.2.8 過度繪制 760 18.2.9 UGUI網格重建 763 18.2.10 RaycastTarget優化 765 18.2.11 小地圖優化 766 18.2.12 覆蓋材質 766 18.2.13 通用Shader面板 767 18.2.14 離線合并貼圖 770 18.2.15 運行時合并ASTC貼圖 771 18.2.16 運行時合并圖集 773 18.2.17 運行時合并網格 774 18.2.18 Prefab嵌套與只讀 776 18.2.19 AB文件合并 777 18.3 小結 778 本書分為兩大部分,其中第一部分“基礎篇”包括第1~11章,第二部分“進階篇”包括第12~18章。Unity 3D初學者在學習第一部分后,完全可以制作出屬于自己的游戲。但是能做出來不代表做得好,這里的“好”主要是指游戲性能高以及開發難度大。從商業游戲的角度來說,必須做到這兩點,所以第二部分主要講解Unity 3D的性能與原理。除第1章外,書中的每一章都包含豐富的示例和源代碼,它們是非常寶貴的實戰經驗,可以直接應用在實際開發中。
|