Unity 2D 游戲開發 (Developing 2D Games with Unity: Independent Game Programming with C#)
內容描述
《Unity 2D遊戲開發》既是C#(Unity引擎的業界標準語言)語言的真實演練,
也是包含腳本編寫、玩家輸入管理、資源使用、動畫、碰撞檢測和狀態管理的重要的Unity核心課程。
除基礎知識外,你還將學習最佳編程實踐,有用的遊戲架構模式設計,
以及如何自定義Unity使其符合自己的需要。所有內容旨在構建運行良好的2D遊戲。
通過專註於2D遊戲和Unity不斷擴展的2D工作流程,
本書深入探討了一些非常有用的2D主題,如精靈圖集、
瓦片切割以及全新的Tilemap(瓦片地圖)功能。
全新的分發渠道,如App Store、Google Play、itch.io、Steam以及GOG.com,
讓發現、購買和銷售遊戲比以往任何時候都容易。
目錄大綱
目錄
第1章遊戲與遊戲引擎 1
1.1 遊戲引擎——它們是什麼 1
1.1.1 建造房子的第一種方法 2
1.1.2 建造房子的第二種方法 3
1.1.3 關於第一種方法 3
1.1.4 關於第二種方法 3
1.1.5 結論 4
1.2 歷史上的遊戲引擎 4
1.3 今天的遊戲引擎 5
1.4 Unity遊戲引擎 6
1.5 本章小結 7
第2章Unity簡介 9
2.1 安裝Unity 9
2.2 Unity配置10
2.3 腳本編輯器:Visual Studio 12
2.4 瀏覽Unity界面12
2.5 了解不同的視圖13
2.6 配置和自定義佈局15
2.7 Transform Toolset 15
2.8 Handle Position Controls 16
2.9 Play、Pause和Step控制按鈕17
2.10 Unity項目結構18
2.11 Unity文檔19
2.12 本章小結19
第3章Unity基礎21
3.1 Game Object:容器實體21
3.2 Entity-Component Design 22
3.3 Components: Building Blocks 23
3.4 精靈24
3.5 動畫30
3.6 碰撞器(Collider) 35
3.7 Rigidbody(剛體)組件36
3.8 標籤和層37
3.8.1 標籤(Tag) 37
3.8.2 層(Layer) 38
3.8.3 Sorting Layer(排序層) 39
3.9 預製件(Prefab)介紹41
3.10 腳本:組件邏輯43
3.11 狀態和動畫50
3.11.1 多狀態機50
3.11.2 動畫參數52
3.12 本章小結60
第4章構建遊戲世界61
4.1 Tilemap和Tile Palette 61
4.2 創建Tile Palette 62
4.3 用Tile Palette繪製地圖64
4.4 使用多個Tilemap 66
4.5 圖形設置69
4.6 攝像機70
4.7 使用Cinemachine 73
4.8 虛擬攝像機75
4.9 穩定性82
4.10 材質85
4.11 碰撞器和Tilemap 86
4.11.1 Tilemap Collider 2D 86
4.11.2 複合碰撞器88
4.11.3 編輯Physics Shape 90
4.12 本章小結93
第5章整合遊戲95
5.1 Character類95
5.2 Player類96
5.3 聚焦預製件97
5.3.1 創建硬幣預製件98
5.3.2 設置Circle Collider 2D 98
5.3.3 設置自定義標籤99
5.4 基於層的碰撞檢測100
5.5 觸發器和腳本102
5.6 Scriptable Object(腳本化對象) 103
5.6.1 創建一個Scriptable Object 104
5.6.2 構建Consumable腳本107
5.6.3 組裝我們的道具108
5.6.4 玩家碰撞109
5.6.5 創建用於增加生命值的道具(Heart Power-Up) 111
5.7 本章小結116
第6章生命條與背包117
6.1 創建生命條117
6.1.1 Canvas對象117
6.1.2 UI元素117
6.1.3 構建生命條118
6.1.4 錨點120
6.1.5 調整錨點121
6.1.6 用戶界面圖像遮罩(UI Image Mask) 123
6.1.7 導入自定義字體126
6.1.8 添加生命值文本126
6.1.9 編寫HealthBar.cs腳本128
6.1.10 Scriptable Object:HitPoints 128
6.1.11 更新Character.cs腳本129
6.1.12 更新Player.cs腳本129
6.1.13 創建HealthBar.cs腳本133
6.1.14 配置Health Bar組件135
6.2 背包138
6.2.1 導入背包格子圖像140
6.2.2 配置背包格子141
6.2.3 創建Inventory.cs腳本147
6.3 本章小結157
第7章角色、協程和生成點159
7.1 創建Game Manager 159
7.2 單例(Singleton) 159
7.2.1 創建單例160
7.2.2 創建RPGGameManager預製件162
7.3 Spawn Point(生成點) 162
7.3.1 構建SpawnPoint預製件165
7.3.2 配置Player Spawn Point 167
7.3.3 生成玩家168
7.3.4 小結169
7.3.5 敵人Spawn Point 169
7.4 Camera Manager(攝像機管理器) 170
7.4.1 使用Camera Manager 172
7.4.2 設計Character類174
7.4.3 virtual關鍵字174
7.5 Enemy類175
7.5.1 重構175
7.5.2 internal(內部)訪問修飾符176
7.6 協程(Coroutine) 177
7.6.1 調用協程177
7.6.2 暫停或“讓步”執行177
7.6.3 一個完整的協程177
7.6.4 具有時間間隔的協程178
7.6.5 abstract關鍵字178
7.6.6 實現Enemy類179
7.6.7 DamageCharacter()方法180
7.6.8 ResetCharacter() 182
7.6.9 在OnEnable()中調用ResetCharacter() 182
7.6.10 KillCharacter() 182
7.7 更新Player類183
7.7.1 重構預製件的實例化184
7.7.2 回顧185
7.7.3 使用已經構建的功能185
7.7.4 OnCollisionEnter2D()方法186
7.7.5 OnCollisionExit2D()方法187
7.7.6 配置Enemy.cs腳本188
7.8 本章小結188
第8章人工智能和彈弓武器189
8.1 漫遊算法189
8.1.1 入門190
8.1.2 創建漫遊腳本191
8.1.3 漫遊變量191
8.1.4 構建Start()方法193
8.1.5 漫遊協程194
8.2 選擇一個新的端點196
8.2.1 角度變弧度,再變向量197
8.2.2 敵人行走動畫197
8.2.3 Move()協程200
8.2.4 配置漫遊腳本203
8.2.5 OnTriggerEnter2D()方法203
8.2.6 OnTriggerExit2D()方法205
8.2.7 Gizmo 206
8.3 自我防衛(Self-Defense) 209
8.4 Ammo類210
8.4.1 導入資源210
8.4.2 添加組件,設置圖層210
8.4.3 更新圖層碰撞矩陣211
8.4.4 構建Ammo.cs腳本211
8.4.5 在我們忘記之前製作AmmoObject預製件213
8.5 對像池(Object Pooling) 213
8.6 創建Weapon類214
8.6.1 Stubbing-Out方法216
8.6.2 SpawnAmmo()方法218
8.6.3 Arc類和線性插值220
8.6.4 屏幕點和世界點222
8.6.5 FireAmmo()方法223
8.6.7 配置Weapon.cs腳本225
8.6.8 沿弧線運動225
8.7 添加彈弓動畫227
8.8 混合樹228
8.8.1 清理動畫器228
8.8.2 構建行走混合樹229
8.8.3 層和多層嵌套231
8.8.4 關於混合類型(Blend Type) 231
8.8.5 Animation Parameter(動畫參數) 232
8.8.6 使用參數232
8.8.7 好了,但為什麼呢234
8.8.8 循環時間235
8.8.9 創建轉換236
8.9 更新運動控制器236
8.9.1 導入戰鬥精靈237
8.9.2 創建動畫剪輯238
8.9.3 構建戰鬥混合樹239
8.9.4 Exit Time(退出時間) 240
8.9.5 更新Weapon類240
8.9.6 添加變量241
8.9.7 Start()方法242
8.9.8 更新Update()方法243
8.9.9 確定方向243
8.9.10 斜率方法245
8.9.11 計算斜率246
8.9.12 比較y軸截距247
8.9.13 HigherThanNegative-SlopeLine()方法248
8.9.14 GetQuadrant()方法248
8.9.15 UpdateState()方法250
8.10 受到傷害時閃爍252
8.11 在其他平台上運行遊戲254
8.12 退出遊戲255
8.13 本章小結256
8.14 未來方向256
8.14.1 社區256
8.14.2 了解更多信息257
8.14.3 去哪裡尋求幫助257
8.14.4 Game Jams 257
8.14.5 新聞和文章258
8.14.6 遊戲和資源258
8.15 超越258
作者介紹
Jared Halpern
是一名擁有計算機科學背景和超過12年各種技術工作經驗的軟件開發人員。
最近他專注於Apple和Unity。
多年來,Jared已經開發了許多iPhone應用程序,包括遊戲、
增強現實(AR)、攝影、電子商務、視頻和GIF應用程序。
他的興趣包括Swift、Unity、AR、遊戲開發,以及使用這些技術開發的創造性應用程序。
他對遊戲開發充滿熱情,希望將游戲作為一種交互媒介用於講故事,
以及提供其他媒介無法提供的體驗。
他目前喜歡做一名自由軟件開發人員。