Unity 2D遊戲開發從入門到精通

Unity 2D遊戲開發從入門到精通

本書是國內第一本專門介紹Unity 2D遊戲開發的圖書,也是國內唯一一本講解Unity 2D遊戲開發的教程。本書通過對遊戲製作過程的詳細介紹,幫助Unity開發人員儘快熟悉2D遊戲的開發流程和方式。同時,為了照顧遊戲開發的初學者,本書還對2D遊戲各種理論做了必要描述。 本書共分3篇。第1篇介紹了戰機類遊戲《飛船大戰外星人》的開發,過程較簡單,適合作為讀者接觸並開發的第一個遊戲;第2篇介紹了卡片類遊戲《記憶大作戰》的開發,過程較難,書中也用了較多的篇幅介紹,適合作為讀者接觸並開發的第一個較複雜的遊戲;第3篇介紹了實時策略類遊戲《狂怒坦克》的開發,過程較難,適合作為讀者了解腳本對於遊戲邏輯重要性的第一個遊戲。 本書不僅有助於Unity開發者從3D遊戲開發轉向2D遊戲開發,而且還有助於初學者快速掌握Unity 2D遊戲開發的基本技能。

前 言

由於智慧型手機近些年井噴似的發展和普及,極大地帶動了手機遊戲的發展,還因此誕生了一個專有名詞——手遊。由於這類設備自身的限制,它迫使遊戲必須具備操作簡單和低硬體性能需求的特點,所以手遊里2D遊戲居多,如憤怒的小鳥和植物大戰殭屍。而2D遊戲相對於3D遊戲,開發過程更簡單,所以更適合新手。

Unity是世界知名的遊戲引擎和開發工具。它支持多平台開發,而使用它開發的遊戲不計其數。為了方便用戶開發2D遊戲,2013年11月發布的Unity 4.3提供了對2D遊戲的專項支持,即提供相應的開發工具和視圖。而國內遊戲開發者也開始廣泛採用Unity來實施2D遊戲開發。

目前國內圖書市場上還沒有一本專門講解Unity 2D遊戲開發的圖書。筆者花費了大量時間從Unity官網和其他網站蒐集了大量2D遊戲開發的技術文檔,深入研究並總結出了Unity原生和非原生的2D遊戲開發方式,最後集結成冊。本書是國內唯一一本專門講解Unity 2D遊戲開發的圖書。全書遵循行業開發通用流程,詳細地講解了開發中各種常見問題的處理,還深入分析了各種基礎知識。為了方便讀者快速上手,書中提供了較為完整的遊戲供讀者練習,以幫助讀者儘快進入遊戲開發領域的殿堂。本書不僅有助於傳統Unity開發者從3D開發轉向2D開發,還有助於初學者快速掌握2D遊戲開發的基本技能。

本書特色

1.國內第一本專門講解Unity 2D遊戲開發的圖書

通過對遊戲製作過程的詳細介紹,幫助Unity開發人員儘快熟悉2D遊戲的開發流程和方式。同時,為了照顧遊戲開發的初學者,本書還對2D遊戲各種理論做了必要描述。

2.注重操作

由於Unity為開發者提供了全套的界面化設計工具,用戶只需要進行各種操作設定,就可以完成遊戲開發工作的絕大部分。根據這個特點,本書著重講解了開發各個流程所涉及的操作。

3.貼近實際

本書嚴格遵循開發流程,安排圖書內容順序。通過本書的學習,讀者可以培養良好的開發習慣,融入遊戲開發公司的工作環境。

4.講解詳盡

遊戲開發是一個專業領域。在講解Unity的過程中,經常會遇到各種專業知識。本書對涉及的各類知識都給予了詳細講解。

5.難度適中

由於遊戲開發所涉方面眾多,往往將一個完整遊戲的講解全盤灌輸給讀者可能反而會造成各種學習障礙。本書對所涉及的實例遊戲都進行了合理取捨。既保證讀者可以掌握相關的開發內容,又最大程度地保證了遊戲的完整性。

6.提供多種多樣的交流溝通方式

學習的最佳方式是共同學習。但是由於環境所限,大部分讀者都是獨自前行。為了便於讀者更好地學習Unity,我們構建了多樣化的網路學習環境。

本書內容及體系結構

第1篇 戰機遊戲——飛船大戰外星人(第1~3章)

本篇主要內容包括:Unity及其組成的介紹、材質、紋理,以及著手開發的第一個遊戲。通過本篇的學習,讀者可以快速熟悉Unity,以及遊戲開發的專有名詞:材質和紋理,最後開發出第一個遊戲。

第2篇 卡片遊戲——記憶大作戰(第4~12章)

本篇主要內容包括:自定義編輯器、生成紋理圖集、UV、動畫、攝像機和場景的使用、獲取玩家的輸入,以及卡片類遊戲的製作。通過本篇的學習,讀者可以掌握遊戲開發的專有名詞:紋理圖集、UV、動畫、攝像機和場景,最後開發出第一個較複雜的遊戲。

第3篇 實時策略類遊戲——狂怒坦克(第13~18章)

本篇主要內容包括:創建遊戲框架、為玩家精靈添加狀態、添加敵人精靈、添加遊戲背景元素、添加究極敵人。通過本篇的學習,讀者可以掌握使用Unity原生2D工具開發2D遊戲的方法,並了解腳本對於遊戲邏輯的重要性。

學習建議

* 堅持編程:編程需要大量練習,如同學習英語一樣,只有不停的練習,才能掌握遊戲的開發。

* 隨時實踐:學習時讀者的腦子裡有時會冒出很多遊戲的想法,大膽使用Unity和腳本想方設法去實現這個想法,從中獲取的成就感會成為持續學習的動力。

* 相互交流:一個人學到和想到的東西總是有限的,只有相互交流才能對一個知識點有更加全面的把握,進而將其靈活運用到遊戲的開發實踐中。

本書讀者對象

* Unity初學者;

* 遊戲開發的初學者;

* 熟悉Unity 3D遊戲開發,但是需要快速轉向Unity 2D遊戲開發的編程人員;

* 2D遊戲開發愛好者;

* 大中專院校學生;

* 社會培訓班學員。

本書作者

本書由瀋陽理工大學藝術設計學院的王震、河北農業大學藝術學院的喻珊及河北農業大學藝術學院的張揚共同主筆編寫。王震負責編寫了本書第1~6章,喻珊負責編寫了本書第7~12章,張揚負責編寫了本書第13~18章。其他參與編寫的人員有韓先鋒、何艷芬、李榮亮、劉德環、孫姍姍、王曉燕、楊平、楊艷艷、袁玉健、張銳、張翔、陳明、鄧睿、鞏民順、吉燕、水淼、宗志勇、安靜、曹方、曾苗苗、陳超。

目 錄

第1篇 戰機遊戲——飛船大戰外星人

第1章 Unity及其組成的介紹

1.1 Unity概述 2

1.2 項目、資源和場景 4

1.2.1 項目 5

1.2.2 資源 6

1.2.3 場景 8

1.3 場景視圖的操作 8

1.3.1 使用快捷鍵操作場景視圖 9

1.3.2 使用Gizmo操作場景視圖 10

1.4 遊戲對象和組件 11

1.5 腳本與腳本編輯器 13

1.5.1 創建腳本 13

1.5.2 腳本編輯器 13

1.6 腳本的調試 16

1.6.1 調試方法一 16

1.6.2 調試方法二 18

第2章 材質和紋理

2.1 材質和紋理的使用 19

2.1.1 使用材質 19

2.1.2 不同的材料類型——著色器 22

2.1.3 使用紋理 23

2.2 套用於2D遊戲的材質 25

2.2.1 緣由 25

2.2.2 技巧一:使用白色的環境光 25

2.2.3 技巧二:使用光不敏感著色器 26

2.3 紋理使用規則 28

2.3.1 規則1:解析度是2的次方 28

2.3.2 規則2:保證“質量” 29

2.3.3 規則3:增加阿爾法通道(Alpha Channel) 30

2.4 導入紋理 31

2.4.1 導入紋理時默認設定介紹 31

2.4.2 含有透明信息的紋理 32

第3章 著手開發一個簡單的2D遊戲

3.1 開始開發2D遊戲 34

3.1.1 導入紋理資源 34

3.1.2 新建材質資源 35

3.1.3 修改場景的環境光及遊戲時的螢幕尺寸 36

3.2 為場景添加遊戲對象 38

3.2.1 調整遊戲對象的角度 38

3.2.2 改變遊戲對象的位置 39

3.2.3 遊戲對象的“碰撞”組件 39

3.3 讓飛船動起來 41

3.4 讓飛船發射子彈 42

3.4.1 在場景中添加子彈 42

3.4.2 遊戲時,讓子彈在場景中移動 44

3.4.3 生成子彈的預設 46

3.4.4 設定子彈的發射位置 47

3.4.5 在恰當的時機發射子彈 48

3.5 讓外星飛船動起來 51

3.5.1 編寫腳本 51

3.5.2 設定外星飛船的觸發器 52

3.5.3 為子彈預設添加剛體組件 53

3.6 為遊戲添加背景 54

第2篇 卡片遊戲——記憶大作戰

第4章 使用編輯器類自定義編輯器

4.1 編輯器類 58

4.2 開始使用編輯器類編寫工具 58

4.2.1 為項目添加腳本 58

4.2.2 創建指定名稱的資料夾 59

4.3 把工具添加到選單 60

4.3.1 CreateWizard()函式 60

4.3.2 測試腳本的實現效果 60

4.4 讀取場景中選擇的對象 62

4.4.1 在腳本中使用Selection類 62

4.4.2 測試腳本的實現效果 63

4.5 為工具視窗添加用戶輸入框 63

4.6 完成工具的所有功能 64

第5章 圖片與幾何圖形對象

5.1 2D遊戲常用的圖片 67

5.1.1 精靈 67

5.1.2 圖塊集 67

5.1.3 圖形繪製中的問題 68

5.1.4 構想 69

5.2 開始編寫編輯器工具 69

5.3 設定四邊形的軸點 71

5.4 指定四邊形資源的存放路徑 75

5.5 生成四邊形 76

5.5.1 階段一:創建構成四邊形的頂點、UV和三角形 76

5.5.2 階段二:在資源面板中生成四邊形 78

5.5.3 階段三:在場景中實例化一個四邊形 79

5.6 使用四邊形生成工具 80

第6章 生成紋理圖集

6.1 為什麼要使用紋理圖集 83

6.1.1 降低繪製調用的次數 83

6.1.2 便於靈活使用紋理 84

6.1.3 便於管理紋理 84

6.2 開始編寫生成紋理圖集的工具 85

6.3 添加組成紋理圖集的紋理 86

6.4 UV對紋理圖集的重要性 88

6.5 生成紋理圖集 90

6.5.1 步驟一:最佳化輸入的紋理 90

6.5.2 步驟二:構建紋理圖集 92

6.5.3 步驟三:保存圖集的預置 92

6.6 腳本檔案TexturePacker代碼匯總 93

6.7 測試工具的使用效果 95

第7章 UV和動畫

7.1 生成一個可停靠的編輯器 98

7.2 編輯工具視窗的界面 100

7.2.1 添加預置資源選擇區域 100

7.2.2 添加紋理選擇區域 102

7.2.3 添加紋理選擇的兩種方式 103

7.2.4 編寫用於修改格線對象UV坐標的函式 105

7.2.5 添加套用所有設定的按鈕 106

7.3 工具腳本代碼的匯總與使用 107

7.4 一個播放動畫的平面對象 112

第8章 益於2D遊戲的攝像機與場景設定

8.1 攝像機類型:透視與正交 118

8.2 世界單元與像素 120

8.3 世界單元與像素的轉換 122

8.3.1 添加紋理和四邊形對象 122

8.3.2 調整四邊形與攝像機的位置 123

8.3.3 世界單元:像素=1:1 124

8.3.4 對齊螢幕和場景坐標的原點 125

8.4 紋理圖片的完美顯示 127

8.5 其他有用的設定技巧 128

8.5.1 調節深度 128

8.5.2 合成視圖 130

第9章 獲取玩家對2D遊戲的輸入

9.1 自動檢測滑鼠單擊事件 134

9.2 手動檢測滑鼠單擊事件 137

9.2.1 滑鼠按下的鍵及其位置 137

9.2.2 滑鼠單擊的第一個對象 138

9.2.3 滑鼠單擊的所有對象 139

9.3 修改遊戲中的滑鼠圖示 141

9.3.1 準備所需的資源,並做適當設定 141

9.3.2 編寫腳本 143

9.3.3 兩個坐標系導致的問題 144

9.3.4 查看遊戲視圖中的效果 145

9.4 使用鍵盤控制滑鼠移動 147

9.5 對遊戲輸入的抽象——輸入軸 149

9.5.1 了解輸入軸 149

9.5.2 輸入軸在輸入過程中的套用 150

9.6 來自移動設備的輸入 152

9.6.1 檢測移動設備上的觸摸操作 152

9.6.2 把觸摸操作當作滑鼠操作 153

9.6.3 有選擇的編譯代碼 154

第10章 2D卡片遊戲——記憶大作戰

10.1 遊戲設計的文檔 156

10.2 開始著手創建遊戲 157

10.2.1 在資源面板中創建資料夾 157

10.2.2 創建一個紋理圖集 158

10.2.3 創建四邊形對象 160

10.2.4 修改四邊形的材質和UV 161

10.2.5 設定攝像機和遊戲視圖的解析度 163

10.3 設定場景中的卡片 165

10.3.1 設定卡片的屬性 165

10.3.2 定位卡片的位置 167

10.3.3 編寫控制卡片行為的腳本 168

10.3.4 補全場景中其餘的卡片 171

10.4 遊戲管理類 171

10.4.1 重置卡片 172

10.4.2 處理玩家輸入 173

10.4.3 回響玩家輸入 174

10.4.4 遊戲管理類代碼匯總 175

10.5 完善並運行遊戲 179

10.5.1 替換系統滑鼠圖示 180

10.5.2 遊戲運行效果展示 180

第11章 可在線上玩的遊戲——記憶大作戰

11.1 網路連線 183

11.2 建立伺服器端 184

11.3 建立客戶端 185

11.4 測試網路連線的功能 187

11.5 網路視圖組件 189

11.6 構建授權伺服器 191

11.7 建立遊戲輸入操作的秩序 192

11.7.1 遊戲啟動時,禁止輸入操作 193

11.7.2 連線建立後,允許伺服器端的輸入操作 193

11.7.3 伺服器端遠程調用客戶端上的函式 193

11.7.4 客戶端遠程調用伺服器端上的函式 194

11.8 修改遊戲管理類腳本 195

11.9 遊戲運行效果展示 200

11.10 為遊戲添加分數記錄 201

第12章 最佳化遊戲的方法

12.1 最最佳化,如你所想嗎 204

12.2 減少頂點的數目 205

12.3 減少材質 206

12.4 減少UV接縫 207

12.5 不同平台下,紋理的不同設定 208

12.6 對象快取組件 209

12.7 避免頻繁使用Update()函式 209

12.8 合理使用Collider組件 209

12.9 避免使用OnGUI()和GUI類 210

12.10 使用靜態批處理 210

12.11 使用天空盒子 210

第3篇 實時策略類遊戲——狂怒坦克

第13章 創建一個簡單的2D遊戲

13.1 地面 214

13.2 遊戲精靈 217

13.3 精靈動畫 220

13.3.1 Animation 220

13.3.2 Animator 223

13.4 使用腳本實現遊戲邏輯 225

13.4.1 精靈動畫狀態的控制 226

13.4.2 監聽精靈當前的動畫狀態 227

13.5 2D遊戲的運行效果 230

第14章 為遊戲精靈添加更多狀態

14.1 攝像頭追蹤功能 232

14.2 精靈的死亡和重生 235

14.3 添加多個地面 240

14.4 精靈的跳躍狀態 241

14.5 精靈的開火狀態 248

第15章 讓遊戲精靈不再孤單

15.1 為遊戲添加反派角色 253

15.2 精靈與反派角色碰撞後死亡 257

15.3 精靈主動攻擊反派角色 259

15.4 添加反派角色銷毀時的效果 261

15.5 添加多個反派角色到遊戲中 263

第16章 為遊戲添加更多背景元素

16.1 為遊戲場景補充更多元素 265

16.1.1 限制精靈的移動範圍 265

16.1.2 添加背景元素 267

16.1.3 讓背景元素動起來 268

16.1.4 讓粒子效果顯示在前面 270

16.2 記錄分數 272

16.3 動態生成更多的敵人 274

第17章 終極戰鬥

17.1 引入究極敵人 278

17.2 究極敵人的行為邏輯 279

17.3 讓究極敵人的出場更威風些 283

17.4 究極敵人的攻擊方式 286

17.5 玩家精靈的反擊 289

第18章 讓遊戲更完善

18.1 遊戲關卡 296

18.2 遊戲標題及開始按鈕 299

18.2.1 導入標題和按鈕資源 299

18.2.2 表示遊戲狀態的類 300

18.2.3 單擊開始按鈕,進入遊戲 302

18.2.4 遊戲最終運行效果展示 305

相關詞條

熱門詞條

聯絡我們