第1章 Unity基礎 1
1.1 初識遊戲引擎和Unity 2
1.2 運行Unity 3
1.2.1 Unity的版本 3
1.2.2 下載並安裝Unity 4
1.2.3 在綫激活Unity 4
1.2.4 運行示例工程 4
1.3 創建一個Hello World程序 7
1.3.1 安裝Visual Studio 8
1.3.2 編寫腳本 8
1.3.3 編譯輸齣 10
1.4 調試程序 11
1.4.1 顯示Log 11
1.4.2 在Visual Studio中設置斷點 11
1.5 Unity腳本基礎 12
1.5.1 Script(腳本)組件 12
1.5.2 腳本的執行順序 13
1.5.3 腳本的序列化 14
1.5.4 組件式編程 15
1.5.5 協程編程 16
1.6 預置文件Prefab和資源管理 17
1.6.1 創建Prefab 17
1.6.2 Unity資源包 18
1.6.3 管理Unity插件 18
1.7 讀取資源和實例化 19
1.7.1 在腳本中創建一個Game Object 19
1.7.2 通過序列化方式引用資源 19
1.7.3 通過IO方式讀取資源 20
1.8 保存工程 20
1.9 時間和動畫 21
1.10 小結 21
第2章 太空射擊遊戲 23
2.1 遊戲介紹 24
2.1.1 遊戲操作 24
2.1.2 主角和敵人 24
2.1.3 遊戲UI 24
2.2 導入美術資源 24
2.3 創建場景 25
2.3.1 創建火星背景和星空動畫 26
2.3.2 設置攝像機和燈光 30
2.4 創建主角 31
2.4.1 創建腳本 32
2.4.2 控製飛船移動 33
2.4.3 創建子彈 35
2.4.4 創建子彈Prefab 36
2.4.5 發射子彈 37
2.5 創建敵人 38
2.6 物理碰撞 39
2.6.1 添加碰撞體 39
2.6.2 觸發碰撞 40
2.7 高級敵人 43
2.7.1 創建敵人 43
2.7.2 發射子彈 44
2.8 聲音與特效 46
2.9 敵人生成器 48
2.10 遊戲UI和戰鬥管理 50
2.10.1 創建顯示得分的UI界麵 50
2.10.2 創建顯示遊戲失敗的UI界麵 51
2.10.3 編寫腳本 52
2.11 關卡跳轉 54
2.12 用鼠標控製主角 56
2.13 精確的碰撞檢測 58
2.14 自動創建Prefab 60
2.15 發布遊戲 62
2.16 使用PoolManager創建對象池 64
2.17 小結 66
第3章 第一人稱射擊遊戲 68
3.1 策劃 69
3.1.1 遊戲介紹 69
3.1.2 UI界麵 69
3.1.3 主角 69
3.1.4 敵人 69
3.2 遊戲場景 69
3.3 主角 70
3.3.1 角色控製器 70
3.3.2 攝像機 72
3.3.3 武器 73
3.4 敵人 74
3.4.1 尋路 74
3.4.2 設置動畫 76
3.4.3 行為 77
3.5 UI界麵 80
3.6 交互 84
3.6.1 主角的射擊 84
3.6.2 敵人的進攻與死亡 86
3.7 齣生點 88
3.8 小地圖 90
3.9 小結 93
第4章 塔防遊戲 94
4.1 策劃 95
4.1.1 場景 95
4.1.2 攝像機 95
4.1.3 勝負判定 95
4.1.4 敵人 95
4.1.5 防守單位 95
4.1.6 UI界麵 95
4.2 地圖編輯器 96
4.2.1 “格子”數據 96
4.2.2 在Inspector窗口添加自定義UI
控件 98
4.2.3 創建一個自定義窗口 100
4.3 遊戲場景 102
4.4 製作UI 103
4.5 創建遊戲管理器 105
4.6 攝像機 109
4.7 路點 111
4.8 敵人 115
4.9 敵人生成器 118
4.9.1 創建敵人生成器 118
4.9.2 遍曆敵人 121
4.10 防守單位 121
4.11 生命條 130
4.12 小結 132
第5章 2D遊戲 133
5.1 Unity 2D係統簡介 134
5.2 創建Sprite 134
5.2.1 使用SpriteEditor創建Sprite 134
5.2.2 使用SpritePacker創建Sprite 136
5.2.3 圖層排序 137
5.2.4 Sprite邊框和重復顯示 138
5.3 動畫製作 138
5.3.1 序列幀動畫 138
5.3.2 使用腳本實現序列幀動畫 140
5.3.3 骨骼動畫 141
5.4 2D物理 142
5.5 捕魚遊戲 146
5.5.1 遊戲玩法 146
5.5.2 準備2D資源 146
5.5.3 創建魚 148
5.5.4 創建魚群生成器 150
5.5.5 創建子彈和大炮 151
5.5.6 物理碰撞 153
5.6 2D材質 154
5.6.1 修改Sprite顔色 154
5.6.2 自定義的黑白效果材質 155
5.7 小結 155
第6章 與Web服務器的交互 156
6.1 Web服務器簡介 157
6.2 在Windows上安裝部署Apache 158
6.2.1 安裝Apache 158
6.2.2 Apache常用命令 159
6.2.3 安裝MySQL 159
6.2.4 安裝PHP 161
6.2.5 安裝Redis 162
6.3 PHP開發環境 163
6.3.1 第一個PHP程序 163
6.3.2 調試PHP代碼 164
6.3.3 PHP基本語法 165
6.4 WWW基本應用 167
6.4.1 創建簡單的UI界麵 167
6.4.2 GET請求 168
6.4.3 POST請求 169
6.4.4 上傳下載圖片 170
6.4.5 下載聲音文件 171
6.5 分數排行榜 172
6.5.1 創建數據庫 172
6.5.2 創建PHP腳本 173
6.5.3 上傳下載分數 175
6.5.4 使用Redis緩存數據 177
6.6 MD5驗證 179
6.7 小結 180
第7章 TCP UDP實例 181
7.1 網絡開發簡介 182
7.2 簡單的網絡通信程序 184
7.2.1 簡單的TCP程序 184
7.2.2 簡單的UDP程序 186
7.3 異步TCP網絡通信 188
7.3.1 創建數據包對象 188
7.3.2 邏輯處理 190
7.3.3 核心TCP網絡功能 192
7.3.4 創建聊天協議 196
7.4 Unity聊天客戶端 197
7.5 聊天服務器端 200
7.6 JSON.NET簡介 205
7.7 小結 206
第8章 HTML5(WebGL)遊戲移植 207
8.1 關於HTML5和WebGL 208
8.2 導齣Unity遊戲到WebGL平颱 208
8.2.1 導齣WebGL遊戲 208
8.2.2 設置WebGL模闆 210
8.2.3 默認的index.html 210
8.2.4 文件訪問 211
8.3 自定義Loading頁麵 212
8.4 編寫WebGL遊戲插件 215
8.4.1 訪問JavaScript示例一 215
8.4.2 訪問JavaScript示例二 216
8.5 在網頁上保存遊戲記錄 217
8.6 小結 217
第9章 iOS遊戲移植 218
9.1 iOS簡介 219
9.2 軟件安裝 219
9.3 申請開發權限 219
9.4 設置iOS開發環境 219
9.5 測試iOS遊戲 222
9.6 發布iOS遊戲 223
9.7 對接iOS原生語言 223
9.7.1 在Xcode中創建Objectiv-C
代碼 223
9.7.2 在Unity中引用Objectiv-C
代碼 226
9.8 內消費 227
9.9 本地存儲位置 227
9.10 使用命令行編譯Xcode工程 228
9.10.1 編譯Xcode工程 228
9.10.2 打包.ipa文件 228
9.11 小結 228
第10章 Android遊戲移植 229
10.1 Android簡介 230
10.2 安裝Android SDK 230
10.3 運行Android遊戲 231
10.3.1 準備測試環境 231
10.3.2 設置Android遊戲工程 232
10.3.3 測試Android遊戲 234
10.3.4 發布Android遊戲 234
10.3.5 Obb數據包 236
10.4 使用Android Studio 236
10.4.1 Android Studio簡介 237
10.4.2 配置Android Studio 237
10.4.3 創建Hello world程序 238
10.5 從Unity到Android Studio 239
10.5.1 創建Unity工程 240
10.5.2 創建Android Studio工程 241
10.5.3 查看Log 243
10.5.4 發布程序 244
10.6 使用腳本編譯遊戲 245
10.6.1 在Unity中使用腳本導齣
Android工程 245
10.6.2 使用Python腳本訪問Unity
命令行 247
10.6.3 使用命令行編譯Android Studio
工程 248
10.7 獲得簽名證書的sha1值 249
10.8 導入庫文件 250
10.9 Plugins目錄 251
10.10 代碼混淆 251
10.11 百度地圖實例 252
10.11.1 導入百度地圖SDK 252
10.11.2 實現百度地圖控件 253
10.12 觸屏操作 256
10.13 AssetBundle 261
10.13.1 創建AssetBundle資源 261
10.13.2 下載、實例化AssetBundle
資源 263
10.13.3 批量創建AssetBundle 264
10.14 小結 265
第11章 Unity新GUI完全攻略 266
11.1 Unity的GUI係統 267
11.2 Canvas(畫布) 267
11.2.1 創建Canvas 268
11.2.2 設置Canvas 268
11.2.3 Canvas的屏幕適應模式 271
11.2.4 Canvas層級內UI控件的
排序 271
11.2.5 Canvas的隱藏和顯示 272
11.2.6 查找UI層級下的子控件 272
11.3 UI坐標對齊方式 272
11.4 Text(文字) 273
11.5 自定義字體 274
11.5.1 創建字體貼圖 274
11.5.2 創建Shader 276
11.6 Image(圖像) 278
11.6.1 創建Image控件 278
11.6.2 設置Alpha 279
11.6.3 設置Raycast Target 279
11.6.4 設置UI圖像為Sliced類型 280
11.6.5 設置UI圖像為Tiled類型 281
11.6.6 設置UI圖像為Filled類型 281
11.6.7 Mask(濛版) 282
11.7 Button(按鈕)控件 283
11.7.1 創建按鈕 283
11.7.2 設置按鈕狀態變化 283
11.7.3 在編輯器中設置按鈕觸發
事件 284
11.7.4 在腳本中定義按鈕單擊事件 285
11.7.5 判斷按壓按鈕事件 286
11.8 Toggle(開關)控件 286
11.8.1 創建Toggle控件 286
11.8.2 Toggle組 287
11.8.3 Toggle控件的腳本 288
11.9 Raw Image控件 288
11.10 Slider(滑塊)控件 290
11.10.1 創建Slider控件 290
11.10.2 改變滑塊大小 290
11.10.3 使用腳本控製滑塊 291
11.11 Input Field(文本輸入)控件 291
11.12 Scroll View(捲軸視圖)控件 292
11.13 Dropdown(下拉列錶)控件 294
11.14 實用UI功能 295
11.14.1 判斷是否單擊瞭UI 295
11.14.2 拖動UI控件方法1 295
11.14.3 拖動UI控件方法2 297
11.14.4 在UI前麵顯示粒子特效 298
11.15 使用插件DOTween製作動畫 299
11.15.1 在編輯器中設置DOTween
動畫 299
11.15.2 在腳本中設置DOTween
動畫 300
11.16 使用插件EnhancedScroller優化
捲軸視圖 301
11.16.1 創建數據模型 302
11.16.2 創建UI視圖控製腳本 302
11.16.3 創建控製器 302
11.16.4 創建捲軸視圖UI 303
11.17 小結 305
第12章 遊戲開發中的美術工作
流程 306
12.1 Unity和藝術傢 307
12.2 視圖操作捕捉 307
12.3 光照和渲染係統 308
12.3.1 光源類型 308
12.3.2 渲染管道 309
12.3.3 質量設置 310
12.3.4 實時陰影 310
12.3.5 環境光 312
12.3.6 Fog(霧) 313
12.3.7 直接照明與間接照明 314
12.3.8 Lightmapping(光照貼圖) 316
12.3.9 環境反射采樣 321
12.3.10 光照采樣 322
12.4 色彩空間 324
12.5 物理材質 326
12.6 攝像機 329
12.7 地形 331
12.8 粒子特效 334
12.9 物理設置 339
12.10 遊戲資源 341
12.10.1 貼圖 341
12.10.2 在3ds Max中創建
法綫貼圖 342
12.10.3 3ds Max靜態模型導齣 343
12.10.4 3ds Max動畫導齣 345
12.10.5 Maya模型導齣 345
12.11 Unity兩足動畫係統 346
12.11.1 修改3ds Max兩足動畫
骨骼 347
12.11.2 導入3ds Max兩足角色到
Unity 348
12.11.3 導入角色動畫到Unity 348
12.11.4 錶情動畫 349
12.11.5 動畫控製器 350
12.12 動畫插件Skele 351
12.13 電影片段製作 355
12.14 美術資源的優化 357
12.15 小結 358
第13章 Behavior Designer——行為
樹AI 359
13.1 行為樹和AI 360
13.1.1 行為樹插件的安裝 360
13.1.2 簡單的AI處理方式 360
13.1.3 狀態機AI處理方式 361
13.1.4 Behavior Designer的行為樹AI
處理方式 362
13.2 行為樹任務 363
13.2.1 任務返迴值 363
13.2.2 Action(動作) 363
13.2.3 Composite(組閤) 363
13.2.4 Conditional(條件) 365
13.2.5 Decorator(修飾) 366
13.3 行為樹實例 366
13.3.1 主角的行為樹 367
13.3.2 遊蕩的敵人 372
13.3.3 行為樹的交互 373
13.4 行為樹係統擴展 376
13.4.1 外部行為樹 376
13.4.2 自定義任務 377
13.4.3 自定義共享數據類型 378
13.4.4 在腳本中設置行為樹 380
13.4.5 在腳本中發送事件 380
13.5 優化 380
13.6 小結 381
第14章 玩轉PlayMaker 382
14.1 關於PlayMaker 383
14.1.1 優點和缺點 383
14.1.2 安裝 383
14.2 PlayMaker的模塊和工作機製 384
14.2.1 有限狀態機 384
14.2.2 創建PlayMaker狀態機 384
14.2.3 State(狀態) 385
14.2.4 Event(事件) 385
14.2.5 Action(動作) 386
14.2.6 變量 387
14.2.7 發送事件 388
14.3 自定義Action 388
14.4 小結 391
第15章 VR虛擬現實開發 392
15.1 VR簡介 393
15.2 設置HTC Vive開發環境 393
15.3 VR操作示例 394
15.3.1 創建VR場景 394
15.3.2 手柄控製器 395
15.4 小結 397
第16章 AR增強現實開發 398
16.1 AR和Vuforia 399
16.2 創建Vuforia工程 399
16.3 準備AR參考目標 401
16.4 設置AR參考目標 402
16.5 小結 404
第17章 Shader編程與後期特效 405
17.1 Shader簡介 406
17.2 渲染管綫 406
17.3 ShaderLab語言 407
17.4 CG語言簡介 409
17.5 Vertex and Fragment Shader示例 409
17.5.1 顯示紋理和色彩 409
17.5.2 使用通道錶現多個紋理 412
17.5.3 添加基本光照 414
17.5.4 UV動畫效果 415
17.5.5 黑白效果 416
17.5.6 簡單描邊效果 417
17.5.7 Alpha透明效果 419
17.6 屏幕特效示例 421
17.7 後期特效 423
17.8 小結 424
第18章 動態編程和Lua 425
18.1 動態語言簡介 426
18.2 動態讀取程序集實現熱更新 426
18.2.1 創建.dll文件 426
18.2.2 測試熱更新.dll文件 427
18.2.3 通過反射訪問.dll文件 428
18.3 Lua語言快速教程 429
18.3.1 MoonSharp和Lua開發環境的
安裝 429
18.3.2 Lua提供的類型 429
18.3.3 Lua的判斷和循環語句 430
18.3.4 Lua的函數 431
18.3.5 Lua的IO操作 431
18.3.6 Lua的數組操作 432
18.3.7 Lua的字符串操作 433
18.3.8 Lua的協程 433
18.4 Lua與Unity的交互 435
18.4.1 在Unity中讀取Lua代碼 435
18.4.2 將Unity 功能導入到
Lua中 436
18.5 Lua腳本的熱更新 437
18.6 小結 438
附錄A C#語言 439
A.1 C#基礎 440
A.1.1 C#簡介 440
A.1.2 運行控製颱程序 440
A.1.3 類型 441
A.1.4 內置類型 441
A.1.5 標識符 442
A.1.6 語句和錶達式 442
A.1.7 變量和常量 443
A.1.8 枚舉 443
A.1.9 數學操作符 443
A.1.10 關係操作符 444
A.1.11 邏輯操作符 444
A.1.12 操作符優先級 445
A.1.13 方法 445
A.1.14 遞歸 446
A.1.15 條件分支語句 446
A.1.16 循環語句 447
A.1.17 三元操作符 448
A.1.18 預處理 448
A.2 麵嚮對象編程 449
A.2.1 類 449
A.2.2 this關鍵字 450
A.2.3 封裝 451
A.2.4 繼承與多態 452
A.2.5 靜態成員 454
A.2.6 異常處理 455
A.3 字符串 456
A.4 數組 458
A.4.1 創建數組 458
A.4.2 遍曆數組和迭代器 458
A.5 基本I/O操作 460
A.5.1 寫文件 460
A.5.2 讀文件 461
A.5.3 刪除文件 462
A.5.4 二進製讀寫 462
A.6 泛型 463
A.6.1 實現泛型的基本語法 463
A.6.2 List的常見操作 464
A.6.3 List的排序 465
A.7 委托 468
A.7.1 委托 468
A.7.2 Lambda錶達式 469
A.7.3 泛型委托 470
A.7.4 Action和Func 470
A.8 反射和特性 471
A.8.1 反射 471
A.8.2 特性 471
A.9 小結 472
附錄B 特殊文件夾 473
附錄C Unity編輯器菜單中英文對照 475
· · · · · · (
收起)