Unity 3D遊戲開發 第2版

0 / 0
  • 語言:簡體中文
  • ISBN:9787115492944
  • 出版日期:2018/09/01

目錄

第 1章 基礎知識1

1.1 Unity簡介 1

1.2 跨平臺與多工種協作 1

1.3 Unity版本 2

1.4 Unity內置資源或拓展資源 3

1.5 示例項目打包與發佈 5

1.6 Unity服務 7

1.7 小結 8

第 2章 編輯器的結構 9

2.1 遊戲項目 9

2.1.1 創建項目 9

2.1.2 打開專案 10

2.1.3 版本管理 10

2.1.4 安裝多個版本的Unity 11

2.2 Project視圖 12

2.2.1 創建資源 12

2.2.2 搜索資源 13

2.2.3 搜索標籤 14

2.3 Hierarchy視圖 16

2.3.1 創建遊戲對象 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 創建菜單 30

3.1.3 拓展佈局 31

3.1.4 監聽事件 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 覆蓋系統功能表 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編輯器的源碼 60

3.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()靜態引用 67

3.8.7 UIElements 69

3.8.8 查詢系統視窗 71

3.8.9 自定義資源導入類型 73

3.9 小結 74

第4章 遊戲腳本 75

4.1 創建腳本 75

4.1.1 腳本範本 75

4.1.2 拓展腳本範本 76

4.2 腳本的生命週期 78

4.2.1 腳本綁定事件 80

4.2.2 腳本初始化和銷毀 80

4.2.3 腳本更新與協程任務 82

4.2.4 停止協程任務 83

4.2.5 使用OnGUI顯示FPS 84

4.3 多腳本管理 85

4.3.1 腳本的執行順序 85

4.3.2 多腳本優化 86

4.4 腳本序列化 86

4.4.1 查看數據 87

4.4.2 私有序列化數據 88

4.4.3 serializedObject 90

4.4.4 監聽部分元素修改事件 91

4.4.5 序列化/反序列化監聽 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 編譯規則 105

4.5.2 優化編譯 105

4.5.3 編譯DLL 105

4.5.4 腳本跨平臺 106

4.5.5 程式集定義 106

4.5.6 日誌 107

4.6 腳本調試 109

4.7 小結 111

第5章 UGUI遊戲介面 112

5.1 基礎元素 112

5.1.1 Text 112

5.1.2 描邊和陰影 113

5.1.3 動態字體 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 事件系統 121

5.2.1 UI事件 122

5.2.2 UI事件管理 124

5.2.3 UnityAction和UnityEvent 126

5.2.4 RaycastTarget優化 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優化 139

5.4 Atlas 139

5.4.1 創建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 按鈕不規則點擊區域 162

5.5.11 更換默認Shader 164

5.5.12 小地圖優化 164

5.5.13 查看UGUI源碼 165

5.6 小結 165

第6章 2D遊戲開發 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 創建2D動畫 171

6.2.2 2D動畫控制器 173

6.3 Tile地圖 176

6.3.1 創建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 觸發器監聽 193

6.4.6 Effectors 2D 193

6.4.7 優化 194

6.4.8 計算區域 194

6.5 小結 195

第7章 動畫系統 196

7.1 模型 196

7.1.1 Mesh Filter 196

7.1.2 Mesh Renderer 197

7.1.3 Pre

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 系統狀態 204

7.4.2 切換條件 205

7.4.3 狀態機腳本 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 Time 編輯器 215

7.5.1 創建Time

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 創建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章 靜態物件 256

9.1 Lightmap 256

9.1.1 設置烘焙貼圖 256

9.1.2 即時光和焙貼光共存 258

9.1.3 燈光管理 258

9.1.4 運行時更換烘焙貼圖 258

9.1.5 動態更換遊戲物件 260

9.1.6 複製遊戲對象 262

9.2 遮擋剔除 263

9.2.1 遮擋與被遮擋 264

9.2.2 遮擋與被遮擋事件 265

9.2.3 動態剔除 267

9.2.4 自定義遮擋剔除 267

9.3 Batching(靜態合批) 268

9.3.1 設置靜態合批 268

9.3.2 腳本靜態合批 269

9.3.3 動態合批 269

9.3.4 靜態合批的隱患 270

9.4 尋路網格 270

9.4.1 設置尋路 270

9.4.2 連接兩點 272

9.4.3 獲取尋路路徑 272

9.4.4 動態阻擋 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 混音區 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章 資源載入與優化 295

11.1 編輯模式 295

11.1.1 載入資源 295

11.1.2 實例化Pre

11.1.3 創建Pre

11.1.4 更新Pre

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 創建遊戲對象 316

11.5.2 Transform設置排序 316

11.5.3 刪除節點 317

11.5.4 獲取遊戲物件 317

11.5.5 管理遊戲元件 318

11.6 優化工具 319

11.6.1 重複無用資源 319

11.6.2 查看記憶體 321

11.6.3 查看CPU效率 321

11.6.4 自定義觀察區間 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 系統資源修改 332

11.7.8 AssetBundle裏的腳本 333

11.7.9 熱更新代碼 334

11.8 小結 335

第 12章 自動化與打包 336

12.1 資源導入 336

12.1.1 監聽導入事件 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 待保存狀態 343

12.1.9 自動執行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遊戲開發 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 DontDestroy  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 碰撞區域 405

13.5.4 碰撞檢測 406

13.5.5 碰撞觸發器 407

13.5.6 物理調試器 408

13.6 實戰技巧 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

    還沒有人寫書評喔,快來寫第一篇書評吧!

會員中心