關(guān)于我們
書單推薦
新書推薦
|
Unity 3D游戲開發(fā) 第2版
Unity 是一款市場占有率非常高的商業(yè)游戲引擎,橫跨25 個主流游戲平臺。本書基于Unity 2018,結(jié)合2D 游戲開發(fā)和3D 游戲開發(fā)的案例,詳細(xì)介紹了它的方方面面,內(nèi)容涉及編輯器、游戲腳本、UGUI 游戲界面、動畫系統(tǒng)、持久化數(shù)據(jù)、靜態(tài)對象、多媒體、資源加載與優(yōu)化、自動化與打包等。
本書適合初學(xué)者或者有一定基礎(chǔ)的開發(fā)者閱讀。
暢銷書全新升級,新版基于Unity 2018,上一版累計(jì)銷量30000冊
Unity User Group意見領(lǐng)袖北京地區(qū)負(fù)責(zé)人、雨松MOMO技術(shù)博客博主傾力打造
侑虎科技CEO張鑫、Unity 資深開發(fā)者高川作序推薦
游戲蠻牛創(chuàng)始人崇慕、Unity 圣典社區(qū)創(chuàng)始人楊博、游族網(wǎng)絡(luò)技術(shù)總監(jiān)陳小飛、天馬時(shí)空技術(shù)總監(jiān)竇玉波、藍(lán)港互動技術(shù)VP張宏亮、騰訊游戲《穿越火線》手游主程郭智、前Unity 布道師郭振平、網(wǎng)元圣堂技術(shù)總監(jiān)胡志波、Unity 中國Field Engineer陳嘉棟、北京UUG 社區(qū)講師錢康來、鈦核互動聯(lián)合創(chuàng)始人王亮、《武林外傳》手游主程程小山、UVP 價(jià)值專家王文剛等眾多業(yè)內(nèi)大咖傾力推薦
宣雨松,雨松MOMO技術(shù)博客博主,10年以上游戲開發(fā)經(jīng)驗(yàn),北京某上市游戲公司Unity技術(shù)專家,國內(nèi)Unity User Group意見領(lǐng)袖,UVP價(jià)值專家,來自古城西安。
第 1章 基礎(chǔ)知識1
1.1 Unity簡介 1 1.2 跨平臺與多工種協(xié)作 1 1.3 Unity版本 2 1.4 Unity內(nèi)置資源或拓展資源 3 1.5 示例項(xiàng)目打包與發(fā)布 5 1.6 Unity服務(wù) 7 1.7 小結(jié) 8 第 2章 編輯器的結(jié)構(gòu) 9 2.1 游戲項(xiàng)目 9 2.1.1 創(chuàng)建項(xiàng)目 9 2.1.2 打開項(xiàng)目 10 2.1.3 版本管理 10 2.1.4 安裝多個版本的Unity 11 2.2 Project視圖 12 2.2.1 創(chuàng)建資源 12 2.2.2 搜索資源 13 2.2.3 搜索標(biāo)簽 14 2.3 Hierarchy視圖 16 2.3.1 創(chuàng)建游戲?qū)ο蟆?6 2.3.2 搜索游戲?qū)ο蟆?6 2.4 Inspector視圖 17 2.4.1 標(biāo)題欄 17 2.4.2 組件欄 18 2.5 Scene視圖 19 2.5.1 導(dǎo)航欄 19 2.5.2 標(biāo)題欄 20 2.5.3 坐標(biāo)系控制器 21 2.5.4 視圖預(yù)覽 21 2.6 Game視圖 22 2.6.1 標(biāo)題欄 22 2.6.2 視圖預(yù)覽 23 2.7 導(dǎo)航欄視圖 23 2.8 其他功能 25 2.8.1 小鎖頭 25 2.8.2 窗口菜單 25 2.8.3 保存組件參數(shù) 26 2.8.4 Package Manager 26 2.9 小結(jié) 27 第3章 拓展編輯器 28 3.1 拓展Project視圖 28 3.1.1 拓展右鍵菜單 28 3.1.2 創(chuàng)建菜單 30 3.1.3 拓展布局 31 3.1.4 監(jiān)聽事件 32 3.2 拓展Hierarchy視圖 33 3.2.1 拓展菜單 33 3.2.2 拓展布局 34 3.2.3 重寫菜單 35 3.3 拓展Inspector視圖 37 3.3.1 拓展源生組件 38 3.3.2 拓展繼承組件 38 3.3.3 組件不可編輯 40 3.3.4 Context菜單 42 3.4 拓展Scene視圖 44 3.4.1 輔助元素 44 3.4.2 輔助UI 45 3.4.3 常駐輔助UI 46 3.4.4 禁用選中對象 47 3.5 拓展Game視圖 48 3.6 MenuItem菜單 49 3.6.1 覆蓋系統(tǒng)菜單 50 3.6.2 自定義菜單 50 3.6.3 源生自定義菜單 51 3.6.4 拓展全局自定義快捷鍵 52 3.7 面板拓展 53 3.7.1 Inspector面板 53 3.7.2 EditorWindows窗口 55 3.7.3 EditorWindows下拉菜單 56 3.7.4 預(yù)覽窗口 57 3.7.5 獲取預(yù)覽信息 59 3.8 Unity編輯器的源碼 60 3.8.1 查看DLL 60 3.8.2 清空控制臺日志 61 3.8.3 獲取EditorStyles樣式 63 3.8.4 獲取內(nèi)置圖標(biāo)樣式 64 3.8.5 拓展默認(rèn)面板 66 3.8.6 例子:查找ManagedStaticReferences()靜態(tài)引用 67 3.8.7 UIElements 69 3.8.8 查詢系統(tǒng)窗口 71 3.8.9 自定義資源導(dǎo)入類型 73 3.9 小結(jié) 74 第4章 游戲腳本 75 4.1 創(chuàng)建腳本 75 4.1.1 腳本模板 75 4.1.2 拓展腳本模板 76 4.2 腳本的生命周期 78 4.2.1 腳本綁定事件 80 4.2.2 腳本初始化和銷毀 80 4.2.3 腳本更新與協(xié)程任務(wù) 82 4.2.4 停止協(xié)程任務(wù) 83 4.2.5 使用OnGUI顯示FPS 84 4.3 多腳本管理 85 4.3.1 腳本的執(zhí)行順序 85 4.3.2 多腳本優(yōu)化 86 4.4 腳本序列化 86 4.4.1 查看數(shù)據(jù) 87 4.4.2 私有序列化數(shù)據(jù) 88 4.4.3 serializedObject 90 4.4.4 監(jiān)聽部分元素修改事件 91 4.4.5 序列化/反序列化監(jiān)聽 92 4.4.6 ScriptableObject 95 4.4.7 腳本的Attributes特性 97 4.4.8 單例腳本 99 4.4.9 定時(shí)器 100 4.4.10 CustomYieldInstruction 101 4.4.11 工作線程 103 4.5 腳本編譯 104 4.5.1 編譯規(guī)則 105 4.5.2 優(yōu)化編譯 105 4.5.3 編譯DLL 105 4.5.4 腳本跨平臺 106 4.5.5 程序集定義 106 4.5.6 日志 107 4.6 腳本調(diào)試 109 4.7 小結(jié) 111 第5章 UGUI游戲界面 112 5.1 基礎(chǔ)元素 112 5.1.1 Text 112 5.1.2 描邊和陰影 113 5.1.3 動態(tài)字體 113 5.1.4 字體花屏 114 5.1.5 Image組件 115 5.1.6 Raw Image組件 116 5.1.7 Button組件 116 5.1.8 Toggle組件 117 5.1.9 Slider組件 118 5.1.10 Scrollbar & ScrollView組件 119 5.1.11 使用ScrollRect組件制作游戲搖桿 120 5.2 事件系統(tǒng) 121 5.2.1 UI事件 122 5.2.2 UI事件管理 124 5.2.3 UnityAction和UnityEvent 126 5.2.4 RaycastTarget優(yōu)化 128 5.2.5 滲透UI事件 129 5.2.6 例子新手引導(dǎo)聚合動畫 131 5.3 Canvas組件 135 5.3.1 自適應(yīng)屏幕 135 5.3.2 錨點(diǎn)對齊方式 137 5.3.3 背景圖全屏 138 5.3.4 布局組件 139 5.3.5 Canvas優(yōu)化 139 5.4 Atlas 139 5.4.1 創(chuàng)建Atlas 139 5.4.2 讀取Atlas 140 5.4.3 Variant 141 5.4.4 多圖集管理 142 5.5 UGUI實(shí)例 142 5.5.1 置灰 142 5.5.2 粒子特效與UI的排序 145 5.5.3 Mask & RectMask2D裁切 147 5.5.4 粒子的裁切 148 5.5.5 粒子自適應(yīng) 152 5.5.6 滑動列表嵌套 154 5.5.7 UI模板嵌套 156 5.5.8 UI特效與界面分離 157 5.5.9 輸入事件 161 5.5.10 按鈕不規(guī)則點(diǎn)擊區(qū)域 162 5.5.11 更換默認(rèn)Shader 164 5.5.12 小地圖優(yōu)化 164 5.5.13 查看UGUI源碼 165 5.6 小結(jié) 165 第6章 2D游戲開發(fā) 166 6.1 Sprite 166 6.1.1 2D攝像機(jī)與分辨率自適應(yīng) 167 6.1.2 Sprite Renderer排序 169 6.1.3 裁切 170 6.2 Sprite動畫 171 6.2.1 創(chuàng)建2D動畫 171 6.2.2 2D動畫控制器 173 6.3 Tile地圖 176 6.3.1 創(chuàng)建Tile 176 6.3.2 Tile Palette 178 6.3.3 編輯Tile 178 6.3.4 多Tile編輯與排序 179 6.3.5 拓展Tile Palette 180 6.3.6 拓展Tile 183 6.3.7 更新Tile 184 6.4 2D碰撞檢測 186 6.4.1 Collider 2D 186 6.4.2 Rigidbody 2D 187 6.4.3 碰撞事件 189 6.4.4 碰撞方向 191 6.4.5 觸發(fā)器監(jiān)聽 193 6.4.6 Effectors 2D 193 6.4.7 優(yōu)化 194 6.4.8 計(jì)算區(qū)域 194 6.5 小結(jié) 195 第7章 動畫系統(tǒng) 196 7.1 模型 196 7.1.1 Mesh Filter 196 7.1.2 Mesh Renderer 197 7.1.3 Prefab 197 7.2 動畫編輯器 198 7.2.1 編輯器面板 198 7.2.2 在編輯器中添加事件 199 7.3 導(dǎo)入類動畫 200 7.3.1 人形重定向動畫 200 7.3.2 通用動畫 202 7.3.3 老版動畫 203 7.3.4 導(dǎo)入類動畫事件 203 7.4 動畫控制器 203 7.4.1 系統(tǒng)狀態(tài) 204 7.4.2 切換條件 205 7.4.3 狀態(tài)機(jī)腳本 206 7.4.4 IK動畫 207 7.4.5 Root Motion 209 7.4.6 Avatar Mask 210 7.4.7 層 211 7.4.8 Blend Tree 212 7.4.9 非運(yùn)行播放動畫 213 7.4.10 Animator Override Controller 214 7.4.11 RuntimeAnimator- Controller 215 7.5 TimeLine編輯器 215 7.5.1 創(chuàng)建Timeline 216 7.5.2 Activation Track 217 7.5.3 Animation Track 217 7.5.4 Audio Track 218 7.5.5 Control Track 218 7.5.6 Playable Track 219 7.5.7 自定義 Track 221 7.6 Playables 222 7.6.1 播放動畫 222 7.6.2 動畫混合 224 7.6.3 音頻混合 225 7.6.4 自定義腳本 226 7.7 Constraint 227 7.7.1 Aim Constraint 227 7.7.2 Parent Constraint 228 7.7.3 腳本控制約束 229 7.8 小結(jié) 229 第8章 持久化數(shù)據(jù) 230 8.1 Excel 230 8.1.1 EPPlus 230 8.1.2 讀取Excel 230 8.1.3 寫入Excel 232 8.1.4 JSON 233 8.1.5 JSON支持字典 235 8.2 文件讀取與寫入 236 8.2.1 PlayerPrefs 237 8.2.2 EditorPrefs 237 8.2.3 PlayerPrefs保存復(fù)雜結(jié)構(gòu) 238 8.2.4 TextAsset 239 8.2.5 讀寫文本 240 8.2.6 運(yùn)行期讀寫文本 240 8.2.7 PersistentDataPath目錄 242 8.2.8 游戲存檔 243 8.3 XML 247 8.3.1 創(chuàng)建XML 247 8.3.2 讀取與修改 248 8.3.3 XML文件 249 8.4 YAML 251 8.4.1 YamlDotNet 252 8.4.2 序列化和反序列化 252 8.4.3 讀取配置 253 8.5 小結(jié) 255 第9章 靜態(tài)對象 256 9.1 Lightmap 256 9.1.1 設(shè)置烘焙貼圖 256 9.1.2 實(shí)時(shí)光和焙貼光共存 258 9.1.3 燈光管理 258 9.1.4 運(yùn)行時(shí)更換烘焙貼圖 258 9.1.5 動態(tài)更換游戲?qū)ο蟆?60 9.1.6 復(fù)制游戲?qū)ο蟆?62 9.2 遮擋剔除 263 9.2.1 遮擋與被遮擋 264 9.2.2 遮擋與被遮擋事件 265 9.2.3 動態(tài)剔除 267 9.2.4 自定義遮擋剔除 267 9.3 Batching(靜態(tài)合批) 268 9.3.1 設(shè)置靜態(tài)合批 268 9.3.2 腳本靜態(tài)合批 269 9.3.3 動態(tài)合批 269 9.3.4 靜態(tài)合批的隱患 270 9.4 尋路網(wǎng)格 270 9.4.1 設(shè)置尋路 270 9.4.2 連接兩點(diǎn) 272 9.4.3 獲取尋路路徑 272 9.4.4 動態(tài)阻擋 274 9.4.5 導(dǎo)出尋路網(wǎng)格信息 274 9.5 反射探頭 277 9.6 小結(jié) 278 第 10章 多媒體 279 10.1 音頻 279 10.1.1 音頻文件 279 10.1.2 Audio Source 280 10.1.3 3D音頻 280 10.1.4 代碼控制播放 281 10.1.5 混音區(qū) 283 10.1.6 Audio Mixer 284 10.1.7 錄音 284 10.1.8 聲音進(jìn)度 285 10.2 視頻 287 10.2.1 視頻文件 287 10.2.2 視頻渲染模式 287 10.2.3 視頻自適應(yīng) 288 10.2.4 UI蓋在視頻之上 289 10.2.5 視頻渲染在材質(zhì)上 290 10.2.6 視頻Render Texture 291 10.2.7 播放工程外視頻 291 10.2.8 自定義視頻顯示 293 10.2.9 視頻進(jìn)度 293 10.3 小結(jié) 294 第 11章 資源加載與優(yōu)化 295 11.1 編輯模式 295 11.1.1 加載資源 295 11.1.2 實(shí)例化Prefab 296 11.1.3 創(chuàng)建Prefab 297 11.1.4 更新Prefab 298 11.1.5 卸載資源 299 11.1.6 游戲?qū)ο笈c資源的關(guān)系 299 11.2 版本管理 300 11.2.1 .meta文件 300 11.2.2 多工程 301 11.2.3 同步文件 302 11.2.4 SVN外鏈 303 11.3 運(yùn)行模式 304 11.3.1 引用資源 304 11.3.2 Resources 305 11.3.3 刪除對象 306 11.3.4 刪除資源 306 11.3.5 GC 307 11.4 AssetBundle 308 11.4.1 設(shè)置AssetBundle 308 11.4.2 依賴關(guān)系 310 11.4.3 通過腳本設(shè)置依賴關(guān)系 311 11.4.4 壓縮格式 311 11.4.5 加載包體內(nèi)的AssetBundle 312 11.4.6 下載AssetBundle 313 11.4.7 加載場景 314 11.4.8 卸載AssetBundle 315 11.5 游戲?qū)ο蟆?15 11.5.1 創(chuàng)建游戲?qū)ο蟆?16 11.5.2 Transform設(shè)置排序 316 11.5.3 刪除節(jié)點(diǎn) 317 11.5.4 獲取游戲?qū)ο蟆?17 11.5.5 管理游戲組件 318 11.6 優(yōu)化工具 319 11.6.1 重復(fù)無用資源 319 11.6.2 查看內(nèi)存 321 11.6.3 查看CPU效率 321 11.6.4 自定義觀察區(qū)間 322 11.6.5 Profiler信息的導(dǎo)出與導(dǎo)入 323 11.6.6 Frame Debugger 324 11.7 資源管理實(shí)例 325 11.7.1 特殊內(nèi)置的文件夾 325 11.7.2 隱藏文件夾 326 11.7.3 Resources與AssetBundle 無縫切換 326 11.7.4 資源加載策略 329 11.7.5 資源更新 329 11.7.6 資源引用關(guān)系 329 11.7.7 系統(tǒng)資源修改 332 11.7.8 AssetBundle里的腳本 333 11.7.9 熱更新代碼 334 11.8 小結(jié) 335 第 12章 自動化與打包 336 12.1 資源導(dǎo)入 336 12.1.1 監(jiān)聽導(dǎo)入事件 336 12.1.2 自動設(shè)置貼圖壓縮格式 337 12.1.3 自動設(shè)置模型 339 12.1.4 禁止模型生成材質(zhì)文件 340 12.1.5 刪除移動資源事件 341 12.1.6 選擇性自動設(shè)置 342 12.1.7 主動設(shè)置 342 12.1.8 待保存狀態(tài) 343 12.1.9 自動執(zhí)行MenuItem 344 12.2 配置錯誤 345 12.2.1 主動檢查工具 345 12.2.2 被動檢查工具 346 12.2.3 導(dǎo)出類檢查工具 346 12.2.4 導(dǎo)出UI 346 12.2.5 生成UI代碼 347 12.2.6 導(dǎo)出模型 351 12.2.7 不參與保存對象 352 12.2.8 導(dǎo)出場景 353 12.2.9 過濾無用場景 355 12.3 自動打包 356 12.3.1 打包前后事件 356 12.3.2 打包后自動壓縮 357 12.3.3 用C# 調(diào)用shell腳本 359 12.3.4 等待shell結(jié)束 359 12.3.5 shell腳本調(diào)用C# 360 12.3.6 shell腳本自動打包 362 12.3.7 徹底解放程序員的雙手 365 12.4 自動構(gòu)建圖集與壓縮 366 12.4.1 UI圖集的壓縮 366 12.4.2 非UI圖集壓縮 370 12.5 小結(jié) 371 第 13章 3D游戲開發(fā) 372 13.1 Shader 372 13.1.1 固定渲染管線 372 13.1.2 可編程渲染管線 375 13.1.3 可編程渲染管線的表面著色器 378 13.1.4 深度排序 379 13.1.5 透明 381 13.1.6 裁切 382 13.1.7 著色器變體采集 383 13.2 攝像機(jī) 384 13.2.1 3D坐標(biāo)轉(zhuǎn)換屏幕坐標(biāo) 384 13.2.2 3D坐標(biāo)轉(zhuǎn)換UI坐標(biāo) 385 13.2.3 主攝像機(jī) 387 13.2.4 在UI上顯示模型 387 13.2.5 Render Texture 389 13.2.6 在Render Texture上顯示帶特效的模型 390 13.2.7 LOD Group 392 13.3 場景管理 393 13.3.1 切換場景 393 13.3.2 DontDestroyOnLoad 393 13.3.3 異步加載場景以及進(jìn)度 393 13.3.4 多場景 395 13.3.5 多場景游戲?qū)ο蠊芾怼?96 13.3.6 場景切換事件 397 13.3.7 多場景烘焙 398 13.4 輸入事件 398 13.4.1 全局事件 398 13.4.2 射線 399 13.4.3 點(diǎn)選3D模型 400 13.4.4 通過點(diǎn)擊控制人物移動 402 13.5 物理碰撞 403 13.5.1 碰撞器 404 13.5.2 角色控制器 404 13.5.3 碰撞區(qū)域 405 13.5.4 碰撞檢測 406 13.5.5 碰撞觸發(fā)器 407 13.5.6 物理調(diào)試器 408 13.6 實(shí)戰(zhàn)技巧 409 13.6.1 3D頭頂文字 409 13.6.2 圖文混排 410 13.6.3 圖片數(shù)字 410 13.6.4 游戲?qū)ο缶彺娉亍?12 13.6.5 游戲資源緩存池 414 13.6.6 運(yùn)行時(shí)合并網(wǎng)格 414 13.6.7 運(yùn)行時(shí)合并貼圖 416 13.7 小結(jié) 419
你還可能感興趣
我要評論
|