本書以實例教學為主線,循序漸進地介紹了Unity在游戲開發方面的不同功能。第1章,由零開始,引導讀者熟悉Unity編輯器的各個功能模塊和特性。第2~4章是3個不同特色的3D游戲實例,使讀者對Unity游戲開發有一個較全面的認識。第5章是一個2D游戲實例,全方位地介紹了Unity在2D游戲方面的應用。第6章和第7章,重點介紹了Unity在網絡方面的應用。第8~10章介紹了如何將Unity游戲移植到網頁、iOS和Android平臺。第11章詳細介紹了Unity的新GUI系統。第12章是關于創建Unity游戲美術資源的工作流程。第13章和第14章分別介紹了行為樹和Play Maker兩款插件,適合各類游戲開發者。另外,本書*后附有C#語言的快速教程,幫助缺乏程序開發基礎的讀者快速入門,同時也包括Unity編輯器菜單欄的中英文對照表供讀者查閱。
本書提供了所有實例的源代碼與素材文件,供讀者上機練習使用,讀者可從網上下載本書資源文件。
本書適用于廣大游戲開發人員、游戲開發愛好者、軟件培訓機構以及計算機專業的學生等。
本書案例源代碼及素材文件的下載地址:http://pan.baidu.com/s/1nvRz0Sh 深受讀者贊譽的Unity游戲開發原創經典,資深Unity游戲開發工程師十年經驗分享根據Unity 5.6.2全新升級,多款熱門游戲實戰教學,Unity3D\2D手游開發核心技術大揭秘新增Unity GUI及DOTween Pro、EnhancedScroller、行為樹AI插件Behavior Designer、Play Maker等,內容更精彩
適用于Unity 5.x,暢銷書全新升級
編寫本書的目的
Unity,也稱Unity 3D,是近幾年非常流行的一款3D游戲開發引擎,它的特點是跨平臺能力強,支持PC、Mac、Linux、網頁、iOS、Android等平臺,移植便捷,3D圖形性能出眾,同時也支持2D功能,為眾多游戲開發者所喜愛。在手機平臺,Unity幾乎成為3D、2D游戲開發的標準工具。
游戲開發是一項復雜的工作,本書在編寫過程中十分注重與實際開發相結合,全書以實例為基礎,使讀者在較短的時間內能快速掌握Unity的各種工具和開發技巧,并應用于實踐中。
本書主要內容
本書為第3版,總體上更新了大部分代碼和截圖,改進了細節,確保與Unity的最新版本是一致的,下面是各章節的內容概要及與前幾版的主要區別。第11~14章是全新的章節。
第1章
介紹Unity編輯器的各個功能模塊,與第2版相比,增加了對Unity特性的介紹,刪除了很多過時的內容。
第2章
是一個太空射擊游戲教程,這是一個入門級的教程,從如何創建一個腳本,到一個完整的游戲有較為細致的介紹。與第2版相比,更新了UI部分,添加了使用插件創建緩存池的教程。
第3章
是一個第一人稱射擊游戲教程,涉及人工智能尋路、動畫、攝像機控制等內容。與第2版相比,更新了UI部分,修改了一些細節,與最新版Unity的功能相匹配。
第4章
是一個塔防游戲教程,介紹了創建更為復雜的關卡,與前幾版相比,這一章改動很大。詳細地介紹了如何自定義Unity編輯器,靈活運用協程實現相對復雜的邏輯,配置和生成
敵人。
第5章
介紹Unity在2D游戲方面的應用,包括創建Sprite、動畫的播放和一個較為完整的2D捕魚游戲實例。與前一版相比,增加了對Sprite新特性的介紹。
第6章
介紹Unity在HTTP網絡通信方面的應用,還涉及PHP和MySQL的基礎應用,使Unity游戲可以與Web服務器進行通信,上傳下載得分記錄等。與第2版相比,增加了Redis的內容,最后還簡單介紹了如何在Linux上部署。
第7章
是一個完整的、基于TCP/IP協議的聊天實例,介紹使用Unity創建聊天客戶端,并使用.NET開發環境創建聊天服務器端。與第2版相比,本章添加了對JSON的介紹和應用示例。
第8章
介紹如何將Unity游戲運行在HTML5網頁上。因為Unity已經放棄了對Unity網頁和Flash插件的支持,所以本章內容是全新的,同時更新了AssetBundle的部分內容。
第9章
介紹如何將Unity游戲移植到iOS平臺,從如何申請開發資格到測試、發布iOS游戲都有詳細的介紹,與前幾版相比,本章刪除了大量過時的內容,重新編寫了Unity與Xcode通信的代碼和示例。
第10章
介紹如何將Unity游戲移植到Android平臺,并詳細介紹了幾種為Unity開發Android插件的方法。因為Google推出了全新的Android開發環境Android Studio,所以這一章改動很大,最后還添加了一個百度地圖的應用實例。
第11章
全面介紹Unity新GUI的大部分功能和細節,并附有大量示例,最后還介紹了DOTween Pro和EnhancedScroller兩款常用插件的使用。
第12章
主要是對創建Unity游戲美術資源的介紹,包括光照系統、Lightmap、PBR Shader和兩足動畫系統等,同時還結合了一些3D動畫軟件的介紹,如3ds Max和Maya。
第13章
介紹行為樹AI插件Behavior Designer(行為設計師),它主要應用在AI方面,無論是程序員還是游戲開發愛好者都能找到使用它的樂趣。
第14章
介紹Unity社區中最有名的插件Play Maker,它和Behavior Designer都屬于可視化編程產品,Behavior Designer的設計模式是基于行為樹, Player Maker是基于狀態機,后者有更廣泛的用戶群。
讀者對象
本書的讀者主要是游戲開發程序員和Unity愛好者,部分內容也適合游戲策劃和游戲藝術家作為參考。
對于本書的完成,要特別感謝王金柱編輯給予的幫助和指導,感謝我的妻子在深夜幫助我校對書稿,還要感謝我的兒子給我莫大的精神支持。
代碼下載
本書案例源代碼及素材文件的下載地址:http://pan.baidu.com/s/1nvRz0Sh。若下載有問題,請發送電子郵件到booksaga@126.com,郵件主題為Unity
3D\2D手機游戲開發從學習到產品。
金璽曾
2017年8月
金璽曾,資深游戲開發工程師,擁有10余年游戲開發經驗,3D塔防游戲《野人大作戰》主要開發者。曾在上海盛大網絡、上海愛客士電腦軟件有限公司任開發經理,目前在個人創業公司從事VR及游戲開發。
目 錄
第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 7
1.3.2
編寫腳本 7
1.3.3
編譯輸出 9
1.4 調試程序 10
1.4.1
顯示Log 10
1.4.2
在Visual Studio中設置斷點 11
1.4.3
在MonoDevelop中設置斷點 12
1.5
Unity腳本基礎 12
1.5.1
Script(腳本)組件 12
1.5.2
腳本的執行順序 12
1.5.3
腳本的序列化 13
1.5.4
組件式的編程 14
1.5.5
協程編程 15
1.6 預置文件Prefab 16
1.7 實例化 17
1.8 讀取資源 18
1.9 保存工程 18
1.10
小結 18
第2章 太空射擊游戲 19
2.1 游戲介紹 20
2.1.1
游戲操作 20
2.1.2
主角和敵人 20
2.1.3
游戲UI 20
2.2 導入美術資源 20
2.3 創建場景 21
2.3.1
創建火星背景和星空動畫 22
2.3.2
設置攝像機和燈光 25
2.4 創建主角 27
2.4.1
創建腳本 27
2.4.2
控制飛船移動 28
2.4.3
創建子彈 30
2.4.4
創建子彈Prefab 31
2.4.5
發射子彈 32
2.5 創建敵人 33
2.6 物理碰撞 34
2.6.1
添加碰撞體 34
2.6.2
觸發碰撞 35
2.7 高級敵人 38
2.7.1
創建敵人 38
2.7.2
發射子彈 39
2.8 聲音與特效 41
2.9 敵人生成器 43
2.10
游戲UI和戰斗管理 45
2.10.1
創建顯示得分的UI界面 45
2.10.2
創建顯示游戲失敗的
UI界面 46
2.10.3
編寫腳本 46
2.11
關卡跳轉 49
2.12
用鼠標控制主角 51
2.13
精確的碰撞檢測 53
2.14
自動創建Prefab 55
2.15
發布游戲 57
2.16
使用Pool Boss創建緩存池 59
2.17
小結 62
第3章 第一人稱射擊游戲 63
3.1 策劃 64
3.1.1
游戲介紹 64
3.1.2
UI界面 64
3.1.3
主角 64
3.1.4
敵人 64
3.2 游戲場景 64
3.3 主角 65
3.3.1
角色控制器 65
3.3.2
攝像機 67
3.3.3
武器 68
3.4 敵人 69
3.4.1
尋路 69
3.4.2
設置動畫 71
3.4.3
行為 72
3.5
UI界面 76
3.6 交互 80
3.6.1
主角的射擊 80
3.6.2
敵人的進攻與死亡 82
3.7 出生點 84
3.8 小地圖 87
3.9 小結 90
第4章 塔防游戲 91
4.1 策劃 92
4.1.1
場景 92
4.1.2
攝像機 92
4.1.3
勝負判定 92
4.1.4
敵人 92
4.1.5
防守單位 92
4.1.6
UI界面 92
4.2 地圖編輯器 93
4.2.1
格子數據 93
4.2.2
在Inspector窗口添加自定義
UI控件 95
4.2.3
創建一個自定義窗口 98
4.3 游戲場景 99
4.4 制作UI 100
4.5 創建游戲管理器 103
4.6 攝像機 106
4.7 路點 109
4.8 敵人 113
4.9 敵人生成器 116
4.9.1
創建敵人生成器 116
4.9.2
遍歷敵人 118
4.10
防守單位 119
4.11
生命條 128
4.12
小結 130
第5章 2D游戲 131
5.1
Unity 2D系統簡介 132
5.2 創建Sprite 132
5.2.1
使用SpriteEditor創建Sprite 132
5.2.2
使用SpritePacker創建Sprite 134
5.2.3
圖層排序 135
5.2.4
Sprite邊框和重復顯示 136
5.3 動畫制作 137
5.3.1
序列幀動畫 137
5.3.2
使用腳本實現序列幀動畫 138
5.3.3
骨骼動畫 139
5.4
2D物理 141
5.5 捕魚游戲 144
5.5.1
游戲玩法 144
5.5.2
準備2D資源 145
5.5.3
創建魚 146
5.5.4
創建魚群生成器 148
5.5.5
創建子彈和大炮 150
5.5.6
物理碰撞 152
5.6
2D材質 153
5.6.1
修改Sprite顏色 153
5.6.2
自定義的黑白效果材質 153
5.7 小結 154
第6章 與Web服務器的交互 155
6.1
Web服務器簡介 156
6.2 在Windows上安裝部署Apache
156
6.2.1
安裝Apache 156
6.2.2
Apache常用命令 158
6.2.3
安裝MySQL 158
6.2.4
安裝PHP 160
6.2.5
安裝Redis 161
6.3
PHP開發環境 162
6.3.1
第一個PHP程序 162
6.3.2
調試PHP代碼 163
6.3.3
PHP基本語法 164
6.4
WWW基本應用 165
6.4.1
HTTP協議 166
6.4.2
GET請求 166
6.4.3
POST請求 168
6.4.4
上傳下載圖片 169
6.4.5
下載聲音文件 170
6.5 分數排行榜 171
6.5.1
創建數據庫 171
6.5.2
創建PHP腳本 172
6.5.3
上傳下載分數 174
6.5.4
使用Redis緩存數據 177
6.6
MD5驗證 179
6.7
Best HTTP 179
6.8
Linux環境部署 180
6.8.1
Linux管理工具 180
6.8.2
安裝Apache 181
6.8.3
安裝MySQL 182
6.8.4
安裝PHP 183
6.8.5
安裝Redis 185
6.9 小結 186
第7章 基于TCP/IP協議的聊天
實例 187
7.1
TCP/IP開發簡介 188
7.2 一個簡單的網絡程序 190
7.3 網絡引擎 192
7.3.1
數據包 193
7.3.2
邏輯處理 199
7.3.3
網絡功能 201
7.3.4
創建聊天協議 208
7.4 聊天客戶端 208
7.5 聊天服務器端 211
7.6
JSON.NET簡介 214
7.7 小結 215
第8章 HTML5(WebGL)游戲
移植 216
8.1 關于HTML5和WebGL 217
8.2 導出Unity游戲到WebGL平臺 217
8.2.1
導出WebGL游戲 217
8.2.2
設置WebGL模板 219
8.2.3
默認的index.html 219
8.2.4
文件訪問 220
8.3 自定義Loading頁面 221
8.4 編寫WebGL游戲插件 224
8.4.1
訪問Javascript示例一 224
8.4.2
訪問Javascript示例二 225
8.5 在網頁上保存游戲記錄
226
8.6
AssetBundle 227
8.6.1
創建AssetBundle資源 227
8.6.2
下載、實例化AssetBundle
資源 229
8.6.3
批量創建AssetBundle 230
8.7 小結 231