目錄
第1章 設定Unity開發環境
1.1 歡迎螢幕 1
1.2 Unity界面 2
1.2.1 選單 2
1.2.2 工具列 9
1.2.3 Hierarchy 10
1.2.4 Inspector 10
1.2.5 Project Browser 11
1.2.6 Scene View 12
1.2.7 Game View 13
1.3 小結 13
1.4 練習 14
第2章 了解資產創作
2.1 檔案格式 15
2.1.1 3D格式 15
2.1.2 2D格式 16
2.2 導入資產 16
2.2.1 從Unity內部導入 16
2.2.2 從檔案瀏覽器導入預製資產 17
2.2.3 創建新資產 17
2.3 導入包 18
2.3.1 Unity包 18
2.3.2 定製包 18
2.4 GameObject 19
2.4.1 第一個GameObject 20
2.4.2 創建GameObject 21
2.5 組件 22
2.5.1 創建組件 23
2.5.2 分配組件 23
2.5.3 預設 24
2.6 小結 24
2.7 練習 25
第3章 創建2D精靈
3.1 在2D模式下工作 27
3.1.1 2D行為 28
3.1.2 2D工作區 28
3.2 創建精靈 29
3.2.1 Import Settings 29
3.2.2 Pixels To Units 30
3.2.3 Sprite Editor 30
3.3 精靈打包 32
3.3.1 Packing Tag 33
3.3.2 Sprite Packer 33
3.3.3 額外的Sprite Packing資源 34
3.4 小結 34
3.5 練習 35
第4章 構建遊戲世界
4.1 關卡設計入門 37
4.1.1 設定場景 37
4.1.2 創建路線圖 38
4.1.3 添加細節 39
4.2 四處逛逛我們的場景 39
4.2.1 Scene Gizmo 40
4.2.2 透視與等距 40
4.2.3 攝像機控制 40
4.3 在Unity中操縱對象 41
4.3.1 變換工具 42
4.3.2 Z深度 43
4.3.3 設定 45
4.4 我們的第一個關卡 45
4.4.1 手動定位GameObject 46
4.4.2 使用Snap Settings放置GameObject 47
4.4.3 使用Grid Snapping放置GameObject 47
4.4.4 高效關卡設計 48
4.4.5 添加排序元素 48
4.5 繼續 50
4.6 小結 50
4.7 練習 51
第5章 運動和玩家控制基礎
5.1 在Unity3D中編碼 53
5.1.1 3種語言 53
5.1.2 選擇“正確”的語言 54
5.2 使玩家動起來 54
5.2.1 處理運動的不同方式 54
5.2.2 創建和掛接PlayerController 56
5.3 設定基本的跟隨攝像機 63
5.4 介紹Input Manager 63
5.5 錯誤處理和調試 65
5.5.1 處理異常 65
5.5.2 Try-Catch-Finally——優雅地處理異常 66
5.5.3 Debug.Log() 68
5.5.4 使用斷點暫停代碼執行 68
5.6 小結 71
5.7 練習 71
第6章 為場景添加動畫
6.1 動畫的一些規則 73
6.1.1 動畫原則 73
6.1.2 2D與3D動畫 74
6.1.3 變換與幀動畫 74
6.1.4 腳本動畫 75
6.1.5 導入動畫 76
6.2 創建動畫 76
6.2.1 動畫組件 77
6.2.2 動畫剪輯 77
6.2.3 Animation視窗 78
6.2.4 動畫事件 82
6.3 動畫狀態 83
6.3.1 動畫器控制器 83
6.3.2 動畫器組件 84
6.3.3 Animator視窗 84
6.3.4 編輯玩家控制器 86
6.4 使用狀態機 89
6.4.1 轉換 89
6.4.2 任意狀態 90
6.4.3 混合樹 90
6.5 小結 90
6.6 練習 90
第7章 設定玩家物理和碰撞器
7.1 了解物理學 93
7.1.1 質量 93
7.1.2 重力 94
7.1.3 力 94
7.2 2D與3D 94
7.2.1 6DoF 94
7.2.2 Z深度 94
7.2.3 旋轉 95
7.3 Physics 2D Settings 95
7.3.1 通用物理設定 95
7.3.2 圖層碰撞矩陣 96
7.4 剛體 97
7.5 碰撞器 98
7.5.1 Circle Collider 98
7.5.2 Box Collider 99
7.5.3 Edge Collider 99
7.5.4 Polygon Collider 99
7.6 物理材質 100
7.7 約束 101
7.8 小結 105
7.9 練習 105
第8章 創建和套用玩法系統
8.1 Unity的觸發器體
(Trigger Volume) 107
8.1.1 Trigger2D函式 107
8.1.2 為GameObject添加觸發器組件 108
8.2 創建檢查點 108
8.2.1 為Checkpoint Component編寫腳本 108
8.2.2 調整檢查點觸發器的尺寸和位置 109
8.3 使用檢查點與重生 111
8.3.1 準備Pit觸發器體(Trigger Volume) 111
8.3.2 為Pit觸發器組件編寫腳本 112
8.4 創建收集物品 114
8.4.1 為收集物品準備浮動硬幣預設 115
8.4.2 為CoinPickup組件編寫腳本 115
8.4.3 為收集物品準備彈出硬幣預設 116
8.4.4 準備硬幣盒預設 117
8.4.5 為硬幣盒組件編寫腳本 119
8.4.6 為CoinSpawner組件編寫腳本 120
8.4.7 整合遊戲 121
8.4.8 少許最佳化 122
8.5 跟蹤玩家的統計 123
8.6 小結 125
8.7 練習 125
第9章 創建危險和困難
9.1 創建第一個敵人 127
9.1.1 準備Slime敵人GameObject 127
9.1.2 繼承和EnemyController組件 128
9.1.3 為敵人Slime組件編寫腳本 129
9.1.4 為關卡添加牆壁 131
9.1.5 處理與其他Slime的碰撞 132
9.1.6 為Slime添加動畫 133
9.2 處理傷害 134
9.2.1 在PlayerStats組件編寫腳本傷害 134
9.2.2 創建傷害觸發器 135
9.2.3 穿過玩家的空間 136
9.2.4 為Pit添加傷害 137
9.2.5 添加受到傷害後暫時免疫 138
9.2.6 免疫視覺表現,古典辦法 140
9.3 處理玩家死亡 142
9.4 擴展平台 143
9.4.1 準備移動平台預設 143
9.4.2 編寫Flight Point組件腳本 144
9.5 創建第二種敵人 146
9.5.1 準備Fly敵人GameObject 146
9.5.2 將動畫添加到Fly 147
9.5.3 編寫FlyController組件的腳本 148
9.5.4 調整FlightPoints腳本 149
9.6 維護敵人部署 150
9.6.1 準備出生觸發器 151
9.6.2 編寫出生觸發器組件的腳本 151
9.7 淺談挑戰 153
9.8 小結 153
9.9 練習 153
第10章 創建選單和界面元素
10.1 UI設計 155
10.1.1 diegetic 155
10.1.2 non-diegetic 156
10.1.3 meta 156
10.1.4 spatial 156
10.2 Unity原生(Native)GUI 156
10.2.1 GUI Style(樣式) 157
10.2.2 GUI Skin 157
10.2.3 GUI控制項 158
10.2.4 Compound Controls(複合控制項) 158
10.2.5 GUI Class 158
10.2.6 GUI Layout 159
10.2.7 GUI Text 159
10.2.8 GUI Texture 159
10.3 創建閃屏 160
10.4 標題螢幕 161
10.5 遊戲結束螢幕 162
10.6 遊戲勝利螢幕 163
10.7 HUD 164
10.7.1 創建視覺 165
10.7.2 創建腳本 166
10.8 小結 172
10.9 練習 172
第11章 為GameObjects套用效果
11.1 Shuriken粒子系統介紹 173
11.1.1 術語解析 173
11.1.2 創建粒子系統 174
11.2 粒子系統的模組和屬性 175
11.2.1 粒子系統基本屬性 175
11.2.2 其他粒子系統模組 176
11.2.3 粒子系統曲線 176
11.3 給遊戲添加粒子特效 177
11.3.1 為硬幣箱創建粒子特效 177
11.3.2 連線硬幣箱粒子特效 179
11.3.3 為傷害創造粒子特效 180
11.3.4 通過代碼調用Damage Particle System 182
11.3.5 粒子小樂趣 183
11.4 Unity的音頻系統 183
11.4.1 音頻源組件 184
11.4.2 音頻監聽器組件 185
11.4.3 音頻混響區組件 186
11.5 為玩家添加聲音 186
11.5.1 為行走循環添加腳步聲 186
11.5.2 為跳躍事件添加聲音 188
11.5.3 為傷害事件添加聲音 189
11.6 為收集系統添加聲音 191
11.6.1 為硬幣箱使用音效 191
11.6.2 為收集硬幣添加聲音 191
11.7 套用些許最佳化 192
11.7.1 改進攝像機 192
11.7.2 改進玩家死亡 195
11.8 小結 199
11.9 練習 199
第12章 組織和最佳化
12.1 組織資產 201
12.1.1 組織預設 202
12.1.2 標籤 202
12.1.3 層次 203
12.2 組織腳本和代碼 205
12.2.1 組織腳本檔案 206
12.2.2 組織代碼 206
12.3 最佳化 213
12.3.1 預設 213
12.3.2 物理學 214
12.3.3 繪製調用 215
12.3.4 三角形數量 216
12.3.5 批處理 217
12.3.6 Rendering Statistics視窗 217
12.4 小結 218
12.5 練習 218
第13章 整合所有內容
13.1 把關卡連線在一起 221
13.1.1 準備勝利觸發器預設 221
13.1.2 創建勝利觸發器腳本 223
13.1.3 獲取硬幣值 225
13.2 連線“介紹”螢幕 226
13.3 贏或輸:重回遊戲 228
13.3.1 從遊戲結束恢復 228
13.3.2 勝利後從頭開始 230
13.4 生成和部署遊戲 231
13.4.1 Web Player的Build Settings 232
13.4.2 PC、Mac和Linux Build Settings 232
13.4.3 跨平台播放器的設定 233
13.4.4 Web Player的Player Settings 233
13.4.5 正確設定遊戲 234
13.4.6 生成Web Player的遊戲 235
13.4.7 將遊戲部署到Web 235
13.4.8 部署後 235
13.5 前進 236
13.5.1 打磨遊戲的注意事項 236
13.5.2 貨幣化 236
13.6 最後的話 238
第14章 UGUI
14.1 UGUI組件 241
14.2 創建示例界面 242
14.2.1 Canvas組件 243
14.2.2 Rect Transform 245
14.2.3 UI Rect工具 247
14.2.4 添加Mask組件 248
14.2.5 Event System和事件觸發器 248
14.3 小結 249
附錄 JavaScript代碼示例
玩家腳本 251
收集腳本 257
敵人腳本 258
遊戲系統腳本 260
GUI腳本 263
危險腳本 268
系統腳本 270