Unity 實戰, 3/e Unity in Action : Multiplatform Game Development in C#, 3/e

[美]約瑟夫·霍金(Joseph Hocking)著 王冬 殷崇英 譯

  • Unity 實戰, 3/e-preview-1
  • Unity 實戰, 3/e-preview-2
  • Unity 實戰, 3/e-preview-3
Unity 實戰, 3/e-preview-1

買這商品的人也買了...

商品描述

編寫游戲能獲得較豐厚的回報並且充滿樂趣——使用Unity,很容易上手編寫游戲!Unity會為我們處理繁重的工作,所以你可以專註於游戲玩法、圖像和用戶體驗。C#的支持和一個龐大的預構建組件生態系統甚至可以幫助開發新手快速從繪圖板轉向屏幕。 《Unity實戰(第3版)》介紹如何使用Unity游戲平臺創建游戲。其中包含的許多2D、3D和AR/VR游戲示例能讓你親身體驗Unity的工作流程和**進的渲染引擎。《Unity實戰(第3版)》已完全更新,介紹了Unity的XR工具包,展示瞭如何開始構建VR和AR應用。 ● 創建跑、跳、撞東西的角色 ● 用AI編寫敵人腳本 ● 播放音樂和空間感知音效 ● 將游戲部署到桌面、手機和網頁上

目錄大綱

第Ⅰ部分 起步

第1 章 初識Unity........................................3

1.1 為什麽Unity 如此優秀...............4

1.1.1 Unity 的優勢...........................4

1.1.2 要意識到的缺點.....................6

1.1.3 使用Unity 構建的游戲示例.........................................7

1.2 如何使用Unity.............................10

1.2.1 Scene 視圖、Game 視圖和工具欄...................................12

1.2.2 使用鼠標和鍵盤...................14

1.2.3 Hierarchy 視圖和Inspector面板.......................................14

1.2.4 Project 和Console 標簽.......15

1.3 開始使用Unity 編程..................16

1.3.1 在Unity 中運行代碼:腳本組件.......................................16

1.3.2 使用附帶的IDE:Visual Studio.........................18

1.3.3 打印到Console 視圖:Hello World!.......................19

1.4 小結...................................................21

第2 章 構建一個令人置身3D 空間的演示游戲..................................23

2.1 在開始之前....................................24

2.1.1 對項目做計劃.......................24

2.1.2 瞭解3D 坐標空間................25

2.2 開始項目:在場景中放置對象.................................................. 27

2.2.1 佈景:地面、外牆和內牆....................................... 27

2.2.2 光源和攝像機...................... 29

2.2.3 玩家的碰撞器和視點.......... 31

2.3 移動對象:應用變換的腳本.................................................. 32

2.3.1 圖示說明如何通過編程實現移動.............................. 32

2.3.2 編程實現圖中演示的運動....................................... 32

2.3.3 理解局部和全局坐標空間....................................... 34

2.4 用於觀察周圍情況的腳本組件:MouseLook...................... 35

2.4.1 跟蹤鼠標移動的水平旋轉....................................... 37

2.4.2 有限制的垂直旋轉.............. 38

2.4.3 同時進行水平和垂直旋轉....................................... 40

2.5 鍵盤輸入組件:第一人稱控制.................................................. 42

2.5.1 響應按鍵............................... 43

2.5.2 設置獨立於電腦運行速度的移動速率.................. 44

2.5.3 移動CharacterController以檢測碰撞.......................... 44

2.5.4 將組件調整為走路而不是飛翔.......................................46

2.6 小結...................................................48

第3 章 在3D 游戲中添加敵人和子彈.................................................49

3.1 通過射線投射射擊.....................50

3.1.1 什麽是射線投射...................50

3.1.2 使用ScreenPointToRay命令射擊...............................51

3.1.3 為瞄準點和擊中點添加可視化指示器.......................53

3.2 編寫反應性目標腳本................56

3.2.1 確定被擊中的對象...............56

3.2.2 警告目標被擊中...................57

3.3 漫游AI 基礎.................................58

3.3.1 圖解基礎AI 的工作原理....58

3.3.2 使用射線投射發現障礙物...................................59

3.3.3 跟蹤角色的狀態...................61

3.4 生成敵人預制體..........................62

3.4.1 什麽是預制體.......................63

3.4.2 創建敵人預制體...................63

3.4.3 在不可見的Scene Controller 中實例化.............64

3.5 通過實例化對象進行射擊.......67

3.5.1 創建子彈預制體...................67

3.5.2 發射子彈並和目標碰撞......69

3.5.3 傷害玩家...............................71

3.6 小結...................................................72

第4 章 為游戲開發圖形.........................73

4.1 瞭解美術資源...............................73

4.2 構建基礎3D 場景:白盒........76

4.2.1 白盒的解釋...........................76

4.2.2 為關卡繪制平面圖.............. 77

4.2.3 根據平面圖佈局幾何體...... 77

4.3 使用2D 圖像為場景貼圖....... 79

4.3.1 選擇文件格式...................... 80

4.3.2 導入圖像文件...................... 81

4.3.3 應用圖像............................... 83

4.4 使用貼圖圖像產生天空視覺效果.................................................. 84

4.4.1 什麽是天空盒...................... 84

4.4.2 新建天空盒材質.................. 85

4.5 使用自定義3D 模型................. 87

4.5.1 選擇文件格式...................... 88

4.5.2 導出和導入模型.................. 89

4.6 使用粒子系統創建效果........... 91

4.6.1 調整默認效果的參數.......... 92

4.6.2 為火焰應用新貼圖.............. 94

4.6.3 將粒子效果附加到3D對象上................................... 95

4.7 小結.................................................. 96

第Ⅱ部分 輕松工作

第5 章 使用Unity 的2D 功能構建一款記憶力游戲.........................99

5.1 設置2D 圖形..............................100

5.1.1 為項目做準備....................100

5.1.2 顯示2D 圖像(sprite)..........103

5.1.3 將攝像機切換為2D模式.....................................104

5.2 構建卡片對象並使它響應單擊................................................106

5.2.1 用sprite 構建對象.............106

5.2.2 鼠標輸入代碼....................107

5.2.3 當單擊時顯示卡片正面....107

5.3 顯示不同的卡片圖像............. 108

5.3.1 通過編程加載圖像............ 109

5.3.2 通過不可見的Scene

Controller 設置圖像.......... 110

5.3.3 實例化卡片的網格............ 112

5.3.4 打亂卡片............................ 113

5.4 實現匹配並為匹配評分......... 114

5.4.1 保存並比較翻開的卡片... 115

5.4.2 隱藏不匹配的卡片............ 116

5.4.3 分數的文本顯示................ 117

5.5 重啟按鈕...................................... 119

5.5.1 使用SendMessage編寫UIButton 組件.......... 119

5.5.2 從SceneController 中調用LoadScene................. 121

5.6 小結................................................ 122

第6 章 創建基本的2D 平臺游戲... 123

6.1 設置圖形...................................... 124

6.1.1 放置牆壁和地面................ 124

6.1.2 導入sprite sheet................. 125

6.2 左右移動玩家............................ 126

6.2.1 編寫鍵盤控制.................... 127

6.2.2 與牆壁碰撞........................ 128

6.3 播放sprite 動畫......................... 129

6.3.1 講解Mecanim 動畫系統.................................... 129

6.3.2 在代碼中觸發動畫的播放.................................... 131

6.4 添加跳躍功能............................ 132

6.4.1 因重力而下落.................... 132

6.4.2 實現向上躍動.................... 133

6.4.3 檢測地面............................ 134

6.5 平臺游戲的附加功能............. 135

6.5.1 不同尋常的地面:斜坡和單向平臺............................136

6.5.2 實現移動的平臺................137

6.5.3 攝像機控制........................140

6.6 小結................................................141

第7 章 在游戲中放置GUI.................143

7.1 在開始寫代碼之前...................144

7.1.1 立即模式GUI 還是高級2D 界面.....................144

7.1.2 規劃佈局.............................146

7.1.3 導入UI 圖像......................146

7.2 設置GUI 顯示...........................147

7.2.1 為界面創建畫布................147

7.2.2 按鈕、圖像和文本標簽....148

7.2.3 控制UI 元素的位置..........151

7.3 編程實現UI 中的交互...........153

7.3.1 編程實現不可見的UIController........................154

7.3.2 創建彈出窗口....................155

7.3.3 使用滑動條和輸入字段設置值.................................159

7.4 通過響應事件更新游戲.........161

7.4.1 集成事件系統....................162

7.4.2 從場景中廣播和監聽事件.....................................162

7.4.3 從HUD 廣播和監聽事件.....................................163

7.5 小結................................................165

第8 章 創建第三人稱3D 游戲:玩家移動和動畫......................167

8.1 將攝像機視圖調整為第三人稱視角................................................169

8.1.1 導入用於觀察的角色....... 170

8.1.2 將陰影添加到場景............ 171

8.1.3 圍繞玩家角色旋轉攝像機................................ 172

8.2 編程控制攝像機的相對移動................................................ 175

8.2.1 旋轉角色以面向移動方向.................................... 176

8.2.2 朝某方向前進.................... 178

8.3 實現跳躍動作............................ 179

8.3.1 應用垂直速度和加速度... 180

8.3.2 修改地面檢測來處理邊緣和斜坡........................ 181

8.4 設置玩家角色上的動畫......... 185

8.4.1 在導入的模型上定義動畫剪輯.................................... 187

8.4.2 創建動畫控制器................ 188

8.4.3 編寫操作Animator 組件的代碼.................................... 192

8.5 小結................................................ 193

第9 章 在游戲中添加交互設施和物件.............................................. 195

9.1 創建門和其他設施.................. 196

9.1.1 用按鍵控制開關的門....... 196

9.1.2 在開門之前檢查距離和朝向.................................... 197

9.1.3 創建變色監控器................ 199

9.2 通過碰撞與對象交互............. 200

9.2.1 和具有物理屬性的障礙物碰撞.................................... 201

9.2.2 用觸發器對象操作門....... 202

9.2.3 收集當前關卡散落的物件.................................... 205

9.3 管理倉庫數據和游戲狀態....206

9.3.1 設置玩家和倉庫管理器....207

9.3.2 編程實現游戲管理器........208

9.3.3 把物品存儲在集合對象中:List 與Dictionary.......212

9.4 用於使用和裝備物品的倉庫UI..........................................215

9.4.1 在UI 中顯示倉庫物品......215

9.4.2 裝備用於開門的鑰匙........217

9.4.3 使用血量包恢復玩家的血量.....................................219

9.5 小結................................................220

第Ⅲ部分 沖刺階段

第10 章 將游戲連接到互聯網..........223

10.1 創建戶外場景..........................224

10.1.1 使用天空盒生成天空視覺效果.........................225

10.1.2 通過代碼設置氛圍........226

10.2 從互聯網服務下載天氣數據..............................................228

10.2.1 使用協程請求HTTP數據.................................231

10.2.2 解析XML ......................235

10.2.3 解析JSON......................236

10.2.4 基於天氣數據更新場景.................................239

10.3 添加網絡佈告欄.....................240

10.3.1 從互聯網加載圖像........240

10.3.2 在佈告欄上顯示圖像....243

10.3.3 緩存下載的圖像以供重用.................................244

10.4 將數據發送到Web服務器........................................ 246

10.4.1 跟蹤當前的天氣:發送post 請求......................... 247

10.4.2 PHP 中的服務器端代碼................................ 248

10.5 小結............................................. 249

第11 章 播放音頻:音效和音樂..... 251

11.1 導入音效.................................... 252

11.1.1 支持的文件格式............ 252

11.1.2 導入音頻文件................ 254

11.2 播放音效.................................... 255

11.2.1 音頻剪輯、音源和聲音監聽器.................... 255

11.2.2 設定循環播放的聲音................................ 256

11.2.3 用代碼觸發音效............ 257

11.3 使用音頻控制接口................ 258

11.3.1 建立中心Audio Manager.......................... 259

11.3.2 音量控制UI................... 261

11.3.3 播放UI 聲音.................. 264

11.4 添加背景音樂.......................... 265

11.4.1 播放循環音樂................ 266

11.4.2 獨立控制音樂的音量................................ 269

11.4.3 背景音樂的淡入淡出................................ 271

11.5 小結............................................. 274

第12 章 將各部分整合為一個完整的游戲...................................... 275

12.1 再次利用項目構建動作RPG 演示游戲......................... 276

12.1.1 將多個項目的資源和代碼裝配在一起............277

12.1.2 編程實現“點擊”控制:角色移動和設備操控.........................279

12.1.3 使用新界面替換舊GUI..................................285

12.2 開發總體游戲結構................291

12.2.1 控制任務流和多個關卡.................................292

12.2.2 到達出口,完成一個關卡.................................296

12.2.3 被敵人捉到時闖關失敗.................................298

12.3 處理玩家在游戲過程中的進度..............................................299

12.3.1 保存並加載玩家進度.................................299

12.3.2 完成三個關卡,游戲通關.................................303

12.4 小結..............................................305

第13 章 將游戲部署到玩家設備上.......................................307

13.1 構建到桌面端:Windows、Mac 和Linux............................309

13.1.1 構建應用程序................310

13.1.2 調整Player Settings:設置游戲的名稱和圖標........311

13.1.3 平臺依賴的編譯............311

13.2 構建到Web 端.........................313

13.2.1 構建嵌入網頁的游戲.................................314

13.2.2 與瀏覽器中的JavaScript通信................................ 314

13.3 構建到移動端:iOS 和Android....................................... 318

13.3.1 設置構建工具................ 319

13.3.2 貼圖壓縮........................ 323

13.3.3 開發插件........................ 324

13.4 XR(擴展現實)開發................ 332

13.4.1 支持虛擬現實頭戴式設備................................ 333

13.4.2 面向移動端增強現實的AR Foundation............... 334

13.5 小結............................................. 339

後記.................................................................. 341

附錄A 場景導航和快捷鍵.................. 343

A.1 使用鼠標進行場景導航....... 343

A.2 常用的快捷鍵........................... 344

附錄B 與Unity 一同使用的外部工具.............................................. 345

B.1 編程工具..................................... 345

B.1.1 Rider................................... 345

B.1.2 Xcode................................. 345

B.1.3 Android SDK .....................346

B.1.4 版本控制(Git、SVN) .......346

B.2 3D 美術應用程序....................346

B.2.1 Maya...................................346

B.2.2 3ds Max..............................346

B.2.3 Blender ...............................347

B.2.4 SketchUp............................347

B.3 2D 圖像編輯器.........................347

B.3.1 Photoshop...........................347

B.3.2 GIMP..................................347

B.3.3 TexturePacker ....................347

B.3.4 Aseprite 和Pyxel Edit .......347

B.4 音頻軟件.....................................348

B.4.1 Pro Tools ............................348

B.4.2 Audacity .............................348

附錄C 在Blender 中創建長凳模型..............................................349

C.1 構建網格幾何體.......................350

C.2 模型的貼圖映射.......................353

附錄D 在線學習資源...........................357

D.1 其他指南.....................................357

D.2 代碼庫..........................................358