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