書籍簡介:
Unity 是一款市場占有率非常高的商業(yè)游戲引擎,橫跨25 個主流游戲平臺。本書基于Unity 2018,結合2D 游戲開發(fā)和3D 游戲開發(fā)的案例,詳細介紹了它的方方面面,內容涉及編輯器、游戲腳本、UGUI 游戲界面、動畫系統(tǒng)、持久化數據、靜態(tài)對象、多媒體、資源加載與優(yōu)化、自動化與打包等。 本書適合初學者或者有一定基礎的開發(fā)者閱讀。
作者簡介:
宣雨松
雨松MOMO技術博客博主,10年以上游戲開發(fā)經驗,北京某上市游戲公司Unity技術專家,國內Unity User Group意見領袖,UVP價值專家,來自古城西安。
出版時間:
2018年09月
章節(jié)目錄:
第 1章 基礎知識 1
1.1 Unity簡介 1
1.2 跨平臺與多工種協(xié)作 1
1.3 Unity版本 2
1.4 Unity內置資源或拓展資源 3
1.5 示例項目打包與發(fā)布 5
1.6 Unity服務 7
1.7 小結 8
第 2章 編輯器的結構 9
2.1 游戲項目 9
2.1.1 創(chuàng)建項目 9
2.1.2 打開項目 10
2.1.3 版本管理 10
2.1.4 安裝多個版本的Unity 11
2.2 Project視圖 12
2.2.1 創(chuàng)建資源 12
2.2.2 搜索資源 13
2.2.3 搜索標簽 14
2.3 Hierarchy視圖 16
2.3.1 創(chuàng)建游戲對象 16
2.3.2 搜索游戲對象 16
2.4 Inspector視圖 17
2.4.1 標題欄 17
2.4.2 組件欄 18
2.5 Scene視圖 19
2.5.1 導航欄 19
2.5.2 標題欄 20
2.5.3 坐標系控制器 21
2.5.4 視圖預覽 21
2.6 Game視圖 22
2.6.1 標題欄 22
2.6.2 視圖預覽 23
2.7 導航欄視圖 23
2.8 其他功能 25
2.8.1 小鎖頭 25
2.8.2 窗口菜單 25
2.8.3 保存組件參數 26
2.8.4 Package Manager 26
2.9 小結 27
第3章 拓展編輯器 28
3.1 拓展Project視圖 28
3.1.1 拓展右鍵菜單 28
3.1.2 創(chuàng)建菜單 30
3.1.3 拓展布局 31
3.1.4 監(jiān)聽事件 32
3.2 拓展Hierarchy視圖 33
3.2.1 拓展菜單 33
3.2.2 拓展布局 34
3.2.3 重寫菜單 35
3.3 拓展Inspector視圖 37
3.3.1 拓展源生組件 38
3.3.2 拓展繼承組件 38
3.3.3 組件不可編輯 40
3.3.4 Context菜單 42
3.4 拓展Scene視圖 44
3.4.1 輔助元素 44
3.4.2 輔助UI 45
3.4.3 常駐輔助UI 46
3.4.4 禁用選中對象 47
3.5 拓展Game視圖 48
3.6 MenuItem菜單 49
3.6.1 覆蓋系統(tǒng)菜單 50
3.6.2 自定義菜單 50
3.6.3 源生自定義菜單 51
3.6.4 拓展全局自定義快捷鍵 52
3.7 面板拓展 53
3.7.1 Inspector面板 53
3.7.2 EditorWindows窗口 55
3.7.3 EditorWindows下拉菜單 56
3.7.4 預覽窗口 57
3.7.5 獲取預覽信息 59
3.8 Unity編輯器的源碼 603.8.1 查看DLL 60
3.8.2 清空控制臺日志 61
3.8.3 獲取EditorStyles樣式 63
3.8.4 獲取內置圖標樣式 64
3.8.5 拓展默認面板 66
3.8.6 例子:查找ManagedStaticReferences()靜態(tài)引用 67
3.8.7 UIElements 69
3.8.8 查詢系統(tǒng)窗口 71
3.8.9 自定義資源導入類型 73
3.9 小結 74
第4章 游戲腳本 75
4.1 創(chuàng)建腳本 75
4.1.1 腳本模板 75
4.1.2 拓展腳本模板 76
4.2 腳本的生命周期 78
4.2.1 腳本綁定事件 80
4.2.2 腳本初始化和銷毀 80
4.2.3 腳本更新與協(xié)程任務 82
4.2.4 停止協(xié)程任務 83
4.2.5 使用OnGUI顯示FPS 84
4.3 多腳本管理 85
4.3.1 腳本的執(zhí)行順序 85
4.3.2 多腳本優(yōu)化 86
4.4 腳本序列化 86
4.4.1 查看數據 87
4.4.2 私有序列化數據 88
4.4.3 serializedObject 90
4.4.4 監(jiān)聽部分元素修改事件 91
4.4.5 序列化/反序列化監(jiān)聽 92
4.4.6 ScriptableObject 95
4.4.7 腳本的Attributes特性 97
4.4.8 單例腳本 99
4.4.9 定時器 100
4.4.10 CustomYieldInstruction 101
4.4.11 工作線程 103
4.5 腳本編譯 104
4.5.1 編譯規(guī)則 105
4.5.2 優(yōu)化編譯 105
4.5.3 編譯DLL 105
4.5.4 腳本跨平臺 106
4.5.5 程序集定義 106
4.5.6 日志 1074.6 腳本調試 109
4.7 小結 11
第5章 UGUI游戲界面 112
5.1 基礎元素 112
5.1.1 Text 112
5.1.2 描邊和陰影 113
5.1.3 動態(tài)字體 113
5.1.4 字體花屏 114
5.1.5 Image組件 115
5.1.6 Raw Image組件 116
5.1.7 Button組件 116
5.1.8 Toggle組件 117
5.1.9 Slider組件 118
5.1.10 Scrollbar & ScrollView組件 119
5.1.11 使用ScrollRect組件制作游戲搖桿 120
5.2 事件系統(tǒng) 121
5.2.1 UI事件 122
5.2.2 UI事件管理 124
5.2.3 UnityAction和UnityEvent 126
5.2.4 RaycastTarget優(yōu)化 128
5.2.5 滲透UI事件 129
5.2.6 例子——新手引導聚合動畫 131
5.3 Canvas組件 135
5.3.1 自適應屏幕 135
5.3.2 錨點對齊方式 137
5.3.3 背景圖全屏 138
5.3.4 布局組件 139
5.3.5 Canvas優(yōu)化 139
5.4 Atlas 139
5.4.1 創(chuàng)建Atlas 139
5.4.2 讀取Atlas 140
5.4.3 Variant 141
5.4.4 多圖集管理 142
5.5 UGUI實例 142
5.5.1 置灰 142
5.5.2 粒子特效與UI的排序 145
5.5.3 Mask & RectMask2D裁切 147
5.5.4 粒子的裁切 148
5.5.5 粒子自適應 152
5.5.6 滑動列表嵌套 154
5.5.7 UI模板嵌套 156
5.5.8 UI特效與界面分離 157
5.5.9 輸入事件 161
5.5.10 按鈕不規(guī)則點擊區(qū)域 162
5.5.11 更換默認Shader 164
5.5.12 小地圖優(yōu)化 164
5.5.13 查看UGUI源碼 165
5.6 小結 165
第6章 2D游戲開發(fā) 166
6.1 Sprite 166
6.1.1 2D攝像機與分辨率自適應 167
6.1.2 Sprite Renderer排序 169
6.1.3 裁切 170
6.2 Sprite動畫 171
6.2.1 創(chuàng)建2D動畫 171
6.2.2 2D動畫控制器 17
6.3 Tile地圖 176
6.3.1 創(chuàng)建Tile 176
6.3.2 Tile Palette 178
6.3.3 編輯Tile 178
6.3.4 多Tile編輯與排序 179
6.3.5 拓展Tile Palette 180
6.3.6 拓展Tile 183
6.3.7 更新Tile 184
6.4 2D碰撞檢測 186
6.4.1 Collider 2D 186
6.4.2 Rigidbody 2D 187
6.4.3 碰撞事件 189
6.4.4 碰撞方向 191
6.4.5 觸發(fā)器監(jiān)聽 193
6.4.6 Effectors 2D 193
6.4.7 優(yōu)化 194
6.4.8 計算區(qū)域 194
6.5 小結 195
第7章 動畫系統(tǒng) 196
7.1 模型 196
7.1.1 Mesh Filter 196
7.1.2 Mesh Renderer 197
7.1.3 Prefab 197
7.2 動畫編輯器 198
7.2.1 編輯器面板 198
7.2.2 在編輯器中添加事件 199
7.3 導入類動畫 200
7.3.1 人形重定向動畫 200
7.3.2 通用動畫 202
7.3.3 老版動畫 203
7.3.4 導入類動畫事件 203
7.4 動畫控制器 203
7.4.1 系統(tǒng)狀態(tài) 204
7.4.2 切換條件 205
7.4.3 狀態(tài)機腳本 206
7.4.4 IK動畫 207
7.4.5 Root Motion 209
7.4.6 Avatar Mask 210
7.4.7 層 211
7.4.8 Blend Tree 212
7.4.9 非運行播放動畫 213
7.4.10 Animator Override Controller 214
7.4.11 RuntimeAnimator-Controller 215
7.5 TimeLine編輯器 21
7.5.1 創(chuàng)建Timeline 216
7.5.2 Activation Track 217
7.5.3 Animation Track 217
7.5.4 Audio Track 218
7.5.5 Control Track 218
7.5.6 Playable Track 219
7.5.7 自定義 Track 221
7.6 Playables 222
7.6.1 播放動畫 222
7.6.2 動畫混合 224
7.6.3 音頻混合 225
7.6.4 自定義腳本 226
7.7 Constraint 227
7.7.1 Aim Constraint 227
7.7.2 Parent Constraint 228
7.7.3 腳本控制約束 229
7.8 小結 229
第8章 持久化數據 230
8.1 Excel 230
8.1.1 EPPlus 230
8.1.2 讀取Excel 230
8.1.3 寫入Excel 232
8.1.4 JSON 233
8.1.5 JSON支持字典 235
8.2 文件讀取與寫入 236
8.2.1 PlayerPrefs 237
8.2.2 EditorPrefs 237
8.2.3 PlayerPrefs保存復雜結構 238
8.2.4 TextAsset 239
8.2.5 讀寫文本 240
8.2.6 運行期讀寫文本 240
8.2.7 PersistentDataPath目錄 242
8.2.8 游戲存檔 243
8.3 XML 247
8.3.1 創(chuàng)建XML 247
8.3.2 讀取與修改 248
8.3.3 XML文件 249
8.4 YAML 251
8.4.1 YamlDotNet 252
8.4.2 序列化和反序列化 252
8.4.3 讀取配置 253
8.5 小結 255
第9章 靜態(tài)對象 256
9.1 Lightmap 256
9.1.1 設置烘焙貼圖 256
9.1.2 實時光和焙貼光共存 258
9.1.3 燈光管理 258
9.1.4 運行時更換烘焙貼圖 258
9.1.5 動態(tài)更換游戲對象 260
9.1.6 復制游戲對象 262
9.2 遮擋剔除 263
9.2.1 遮擋與被遮擋 264
9.2.2 遮擋與被遮擋事件 265
9.2.3 動態(tài)剔除 267
9.2.4 自定義遮擋剔除 267
9.3 Batching(靜態(tài)合批) 268
9.3.1 設置靜態(tài)合批 268
9.3.2 腳本靜態(tài)合批 269
9.3.3 動態(tài)合批 269
9.3.4 靜態(tài)合批的隱患 270
9.4 尋路網格 270
9.4.1 設置尋路 270
9.4.2 連接兩點 272
9.4.3 獲取尋路路徑 272
9.4.4 動態(tài)阻擋 274
9.4.5 導出尋路網格信息 274
9.5 反射探頭 277
9.6 小結 278
第 10章 多媒體 279
10.1 音頻 279
10.1.1 音頻文件 279
10.1.2 Audio Source 280
10.1.3 3D音頻 280
10.1.4 代碼控制播放 281
10.1.5 混音區(qū) 283
10.1.6 Audio Mixer 284
10.1.7 錄音 284
10.1.8 聲音進度 285
10.2 視頻 287
10.2.1 視頻文件 287
10.2.2 視頻渲染模式 287
10.2.3 視頻自適應 288
10.2.4 UI蓋在視頻之上 289
10.2.5 視頻渲染在材質上 290
10.2.6 視頻Render Texture 291
10.2.7 播放工程外視頻 291
10.2.8 自定義視頻顯示 293
10.2.9 視頻進度 293
10.3 小結 294
第 11章 資源加載與優(yōu)化 295
11.1 編輯模式 295
11.1.1 加載資源 295
11.1.2 實例化Prefab 296
11.1.3 創(chuàng)建Prefab 297
11.1.4 更新Prefab 298
11.1.5 卸載資源 299
11.1.6 游戲對象與資源的關系 299
11.2 版本管理 300
11.2.1 .meta文件 300
11.2.2 多工程 301
11.2.3 同步文件 302
11.2.4 SVN外鏈 303
11.3 運行模式 304
11.3.1 引用資源 304
11.3.2 Resources 305
11.3.3 刪除對象 306
11.3.4 刪除資源 306
11.3.5 GC 307
11.4 AssetBundle 308
11.4.1 設置AssetBundle 308
11.4.2 依賴關系 310
11.4.3 通過腳本設置依賴關系 311
11.4.4 壓縮格式 311
11.4.5 加載包體內的AssetBundle 312
11.4.6 下載AssetBundle 313
11.4.7 加載場景 314
11.4.8 卸載AssetBundle 315
11.5 游戲對象 315
11.5.1 創(chuàng)建游戲對象 316
11.5.2 Transform設置排序 316
11.5.3 刪除節(jié)點 317
11.5.4 獲取游戲對象 317
11.5.5 管理游戲組件 318
11.6 優(yōu)化工具 319
11.6.1 重復無用資源 319
11.6.2 查看內存 321
11.6.3 查看CPU效率 321
11.6.4 自定義觀察區(qū)間 322
11.6.5 Profiler信息的導出與導入 323
11.6.6 Frame Debugger 324
11.7 資源管理實例 325
11.7.1 特殊內置的文件夾 325
11.7.2 隱藏文件夾 326
11.7.3 Resources與AssetBundle無縫切換 326
11.7.4 資源加載策略 329
11.7.5 資源更新 329
11.7.6 資源引用關系 329
11.7.7 系統(tǒng)資源修改 332
11.7.8 AssetBundle里的腳本 333
11.7.9 熱更新代碼 334
11.8 小結 335
第 12章 自動化與打包 336
12.1 資源導入 336
12.1.1 監(jiān)聽導入事件 336
12.1.2 自動設置貼圖壓縮格式 337
12.1.3 自動設置模型 339
12.1.4 禁止模型生成材質文件 340
12.1.5 刪除移動資源事件 341
12.1.6 選擇性自動設置 342
12.1.7 主動設置 342
12.1.8 待保存狀態(tài) 343
12.1.9 自動執(zhí)行MenuItem 344
12.2 配置錯誤 345
12.2.1 主動檢查工具 345
12.2.2 被動檢查工具 346
12.2.3 導出類檢查工具 346
12.2.4 導出UI 346
12.2.5 生成UI代碼 347
12.2.6 導出模型 351
12.2.7 不參與保存對象 352
12.2.8 導出場景 353
12.2.9 過濾無用場景 355
12.3 自動打包 356
12.3.1 打包前后事件 356
12.3.2 打包后自動壓縮 357
12.3.3 用C# 調用shell腳本 359
12.3.4 等待shell結束 359
12.3.5 shell腳本調用C# 360
12.3.6 shell腳本自動打包 362
12.3.7 徹底解放程序員的雙手 365
12.4 自動構建圖集與壓縮 366
12.4.1 UI圖集的壓縮 366
12.4.2 非UI圖集壓縮 370
12.5 小結 371
第 13章 3D游戲開發(fā) 372
13.1 Shader 372
13.1.1 固定渲染管線 372
13.1.2 可編程渲染管線 375
13.1.3 可編程渲染管線的表面著色器 378
13.1.4 深度排序 379
13.1.5 透明 381
13.1.6 裁切 382
13.1.7 著色器變體采集 383
13.2 攝像機 384
13.2.1 3D坐標轉換屏幕坐標 384
13.2.2 3D坐標轉換UI坐標 385
13.2.3 主攝像機 387
13.2.4 在UI上顯示模型 387
13.2.5 Render Texture 389
13.2.6 在Render Texture上顯示帶特效的模型 390
13.2.7 LOD Group 392
13.3 場景管理 393
13.3.1 切換場景 393
13.3.2 DontDestroyOnLoad 393
13.3.3 異步加載場景以及進度 393
13.3.4 多場景 395
13.3.5 多場景游戲對象管理 396
13.3.6 場景切換事件 397
13.3.7 多場景烘焙 398
13.4 輸入事件 398
13.4.1 全局事件 398
13.4.2 射線 399
13.4.3 點選3D模型 400
13.4.4 通過點擊控制人物移動 402
13.5 物理碰撞 403
13.5.1 碰撞器 404
13.5.2 角色控制器 404
13.5.3 碰撞區(qū)域 405
13.5.4 碰撞檢測 406
13.5.5 碰撞觸發(fā)器 407
13.5.6 物理調試器 408
13.6 實戰(zhàn)技巧 409
13.6.1 3D頭頂文字 409
13.6.2 圖文混排 410
13.6.3 圖片數字 410
13.6.4 游戲對象緩存池 412
13.6.5 游戲資源緩存池 414
13.6.6 運行時合并網格 414
13.6.7 運行時合并貼圖 416
13.7 小結 419
封面圖: