作 者:金璽曾 著
定 價:99
出 版 社:清華大學出版社
出版日期:2018年08月01日
頁 數:484
裝 幀:平裝
ISBN:9787302525813
深受讀者贊譽的Unity遊戲開發原創經典,資深Unity遊戲開發工程師十年經驗分享根據Unity 2018改版升級,多款熱門遊戲實戰教學,Unity3D\\2D遊戲開發核心技術揭秘新增VR\\AR遊戲開發、Shade圖形編程、Lua腳本交互與熱更新等,內容更精彩
●第1章 Unity基礎11.1 初識遊戲引擎和Unity21.2 運行Unity31.2.1 Unity的版本31.2.2 下載並安裝Unity41.2.3 在線激活Unity41.2.4 運行示例工程41.3 創建一個Hello World程序71.3.1 安裝Visual Studio81.3.2 編寫腳本81.3.3 編譯輸出101.4 調試程序111.4.1 顯示Log111.4.2 在Visual Studio中設置斷點111.5 Unity腳本基礎121.5.1 Script(腳本)組件121.5.2 腳本的執行順序131.5.3 腳本的序列化141.5.4 組件式編程151.5.5 協程編程161.6 預置文件Prefab和資源管理171.6.1 創建Prefab171.6.2 Unity資源包181.6.3 管理Unity插件181.7 讀取資源和實例化191.7.1 在腳本中創建一個Game Object191.7.2 通過序列化方式引用資源191.7.3 通過IO方式讀取資源201.8 保存工程201.9 時間和動畫211.10 小結21第2章 太空射擊遊戲232.1 遊戲介紹242.1.1 遊戲操作242.1.2 主角和敵人242.1.3 遊戲UI242.2 導入美術資源242.3 創建場景252.3.1 創建火星背景和星空動畫262.3.2 設置攝像機和燈光302.4 創建主角312.4.1 創建腳本322.4.2 控制飛船移動332.4.3 創建子彈352.4.4 創建子彈Prefab362.4.5 發射子彈372.5 創建敵人382.6 物理踫撞392.6.1 添加踫撞體392.6.2 觸發踫撞402.7 高級敵人432.7.1 創建敵人432.7.2 發射子彈442.8 聲音與特效462.9 敵人生成器482.10 遊戲UI和戰鬥管理502.10.1 創建顯示得分的UI界面502.10.2 創建顯示遊戲失敗的UI界面512.10.3 編寫腳本522.11 關卡跳轉542.12 用鼠標控制主角562.13 準確的踫撞檢測582.14 自動創建Prefab602.15 發布遊戲622.16 使用PoolManager創建對像池642.17 小結66第3章 第一人稱射擊遊戲683.1 策劃693.1.1 遊戲介紹693.1.2 UI界面693.1.3 主角693.1.4 敵人693.2 遊戲場景693.3 主角703.3.1 角色控制器703.3.2 攝像機723.3.3 武器733.4 敵人743.4.1 尋路743.4.2 設置動畫763.4.3 行為773.5 UI界面803.6 交互843.6.1 主角的射擊843.6.2 敵人的進攻與死亡863.7 出生點883.8 小地圖903.9 小結93第4章 塔防遊戲944.1 策劃954.1.1 場景954.1.2 攝像機954.1.3 勝負判定954.1.4 敵人954.1.5 防守單位954.1.6 UI界面954.2 地圖編輯器964.2.1 “格子”數據964.2.2 在Inspector窗口添加自定義UI控件984.2.3 創建一個自定義窗口1004.3 遊戲場景1024.4 制作UI1034.5 創建遊戲管理器1054.6 攝像機1094.7 路點1114.8 敵人1154.9 敵人生成器1184.9.1 創建敵人生成器1184.9.2 遍歷敵人1214.10 防守單位1214.11 生命條1304.12 小結132第5章 2D遊戲1335.1 Unity 2D繫統簡介1345.2 創建Sprite1345.2.1 使用SpriteEditor創建Sprite1345.2.2 使用SpritePacker創建Sprite1365.2.3 圖層排序1375.2.4 Sprite邊框和重復顯示1385.3 動畫制作1385.3.1 序列幀動畫1385.3.2 使用腳本實現序列幀動畫1405.3.3 骨骼動畫1415.4 2D物理1425.5 捕魚遊戲1465.5.1 遊戲玩法1465.5.2 準備2D資源1465.5.3 創建魚1485.5.4 創建魚群生成器1505.5.5 創建子彈和大炮1515.5.6 物理踫撞1535.6 2D材質1545.6.1 修改Sprite顏色1545.6.2 自定義的黑白效果材質1555.7 小結155第6章 與Web服務器的交互1566.1 Web服務器簡介1576.2 在Windows上安裝部署Apache1586.2.1 安裝Apache1586.2.2 Apache常用命令1596.2.3 安裝MySQL1596.2.4 安裝PHP1616.2.5 安裝Redis1626.3 PHP開發環境1636.3.1 第一個PHP程序1636.3.2 調試PHP代碼1646.3.3 PHP基本語法1656.4 WWW基本應用1676.4.1 創建簡單的UI界面1676.4.2 GET請求1686.4.3 T請求1696.4.4 上傳下載圖片1706.4.5 下載聲音文件1716.5 分數排行榜1726.5.1 創建數據庫1726.5.2 創建PHP腳本1736.5.3 上傳下載分數1756.5.4 使用Redis緩存數據1776.6 MD5驗證1796.7 小結180第7章 TCP UDP實例1817.1 網絡開發簡介1827.2 簡單的網絡通信程序1847.2.1 簡單的TCP程序1847.2.2 簡單的UDP程序1867.3 異步TCP網絡通信1887.3.1 創建數據包對像1887.3.2 邏輯處理1907.3.3 核心TCP網絡功能1927.3.4 創建聊天協議1967.4 Unity聊天客戶端1977.5 聊天服務器端2007.6 JSON.NET簡介2057.7 小結206第8章 HTML5(WebGL)遊戲移植2078.1 關於HTML5和WebGL2088.2 導出Unity遊戲到WebGL平臺2088.2.1 導出WebGL遊戲2088.2.2 設置WebGL模板2108.2.3 默認的index.html2108.2.4 文件訪問2118.3 自定義Loading頁面2128.4 編寫WebGL遊戲插件2158.4.1 訪問JavaScript示例一2158.4.2 訪問JavaScript示例二2168.5 在網頁上保存遊戲記錄2178.6 小結217第9章 iOS遊戲移植2189.1 iOS簡介2199.2 軟件安裝2199.3 申請開發權限2199.4 設置iOS開發環境2199.5 測試iOS遊戲2229.6 發布iOS遊戲2239.7 對接iOS原生語言2239.7.1 在Xcode中創建Objectiv-C代碼2239.7.2 在Unity中引用Objectiv-C代碼2269.8 內消費2279.9 本地存儲位置2279.10 使用命令行編譯Xcode工程2289.10.1 編譯Xcode工程2289.10.2 打包.ipa文件2289.11 小結228第10章 Android遊戲移植22910.1 Android簡介23010.2 安裝Android SDK23010.3 運行Android遊戲23110.3.1 準備測試環境23110.3.2 設置Android遊戲工程23210.3.3 測試Android遊戲23410.3.4 發布Android遊戲23410.3.5 Obb數據包23610.4 使用Android Studio23610.4.1 Android Studio簡介23710.4.2 配置Android Studio23710.4.3 創建Hello world程序23810.5 從Unity到Android Studio23910.5.1 創建Unity工程24010.5.2 創建Android Studio工程24110.5.3 查看Log24310.5.4 發布程序24410.6 使用腳本編譯遊戲24510.6.1 在Unity中使用腳本導出Android工程24510.6.2 使用Python腳本訪問Unity命令行24710.6.3 使用命令行編譯Android Studio工程24810.7 獲得簽名證書的sha1值24910.8 導入庫文件25010.9 Plugins目錄25110.10 代碼混淆25110.11 百度地圖實例25210.11.1 導入百度地圖SDK25210.11.2 實現百度地圖控件25310.12 觸屏操作25610.13 AssetBundle26110.13.1 創建AssetBundle資源26110.13.2 下載、實例化AssetBundle資源26310.13.3 批量創建AssetBundle26410.14 小結265第11章 Unity新GUI接近攻略26611.1 Unity的GUI繫統26711.2 Canvas(畫布)26711.2.1 創建Canvas26811.2.2 設置Canvas26811.2.3 Canvas的屏幕適應模式27111.2.4 Canvas層級內UI控件的排序27111.2.5 Canvas的隱藏和顯示27211.2.6 查找UI層級下的子控件27211.3 UI坐標對齊方式27211.4 Text(文字)27311.5 自定義字體27411.5.1 創建字體貼圖27411.5.2 創建Shader27611.6 Image(圖像)27811.6.1 創建Image控件27811.6.2 設置Alpha27911.6.3 設置Raycast Target27911.6.4 設置UI圖像為Sliced類型28011.6.5 設置UI圖像為Tiled類型28111.6.6 設置UI圖像為Filled類型28111.6.7 Mask(蒙版)28211.7 Button(按鈕)控件28311.7.1 創建按鈕28311.7.2 設置按鈕狀態變化28311.7.3 在編輯器中設置按鈕觸發事件28411.7.4 在腳本中定義按鈕單擊事件28511.7.5 判斷按壓按鈕事件28611.8 Toggle(開關)控件28611.8.1 創建Toggle控件28611.8.2 Toggle組28711.8.3 Toggle控件的腳本28811.9 Raw Image控件28811.10 Slider(滑塊)控件29011.10.1 創建Slider控件29011.10.2 改變滑塊大小29011.10.3 使用腳本控制滑塊29111.11 Input Field(文本輸入)控件29111.12 Scroll View(卷軸視圖)控件29211.13 Dropdown(下拉列表)控件29411.14 實用UI功能29511.14.1 判斷是否單擊了UI29511.14.2 拖動UI控件方法129511.14.3 拖動UI控件方法229711.14.4 在UI前面顯示粒子特效29811.15 使用插件DOTween制作動畫29911.15.1 在編輯器中設置DOTween動畫29911.15.2 在腳本中設置DOTween動畫30011.16 使用插件EnhancedScroller優化卷軸視圖30111.16.1 創建數據模型30211.16.2 創建UI視圖控制腳本30211.16.3 創建控制器30211.16.4 創建卷軸視圖UI30311.17 小結305第12章 遊戲開發中的美術工作流程30612.1 Unity和藝術家30712.2 視圖操作捕捉30712.3 光照和渲染繫統30812.3.1 光源類型30812.3.2 渲染管道30912.3.3 質量設置31012.3.4 實時陰影31012.3.5 環境光31212.3.6 Fog(霧)31312.3.7 直接照明與間接照明31412.3.8 Lightmapping(光照貼圖)31612.3.9 環境反射采樣32112.3.10 光照采樣32212.4 色彩空間32412.5 物理材質32612.6 攝像機32912.7 地形33112.8 粒子特效33412.9 物理設置33912.10 遊戲資源34112.10.1 貼圖34112.10.2 在3ds Max中創建法線貼圖34212.10.3 3ds Max靜態模型導出34312.10.4 3ds Max動畫導出34512.10.5 Maya模型導出34512.11 Unity兩足動畫繫統34612.11.1 修改3ds Max兩足動畫骨骼34712.11.2 導入3ds Max兩足角色到Unity34812.11.3 導入角色動畫到Unity34812.11.4 表情動畫34912.11.5 動畫控制器35012.12 動畫插件Skele35112.13 電影片段制作35512.14 美術資源的優化35712.15 小結358第13章 Behavior Designer——行為樹AI35913.1 行為樹和AI36013.1.1 行為樹插件的安裝36013.1.2 簡單的AI處理方式36013.1.3 狀態機AI處理方式36113.1.4 Behavior Designer的行為樹AI處理方式36213.2 行為樹任務36313.2.1 任務返回值36313.2.2 Action(動作)36313.2.3 Composite(組合)36313.2.4 Conditional(條件)36513.2.5 Decorator(修飾)36613.3 行為樹實例36613.3.1 主角的行為樹36713.3.2 遊蕩的敵人37213.3.3 行為樹的交互37313.4 行為樹繫統擴展37613.4.1 外部行為樹37613.4.2 自定義任務37713.4.3 自定義共享數據類型37813.4.4 在腳本中設置行為樹38013.4.5 在腳本中發送事件38013.5 優化38013.6 小結381第14章 玩轉PlayMaker38214.1 關於PlayMaker38314.1.1 優點和缺點38314.1.2 安裝38314.2 PlayMaker的模塊和工作機制38414.2.1 有限狀態機38414.2.2 創建PlayMaker狀態機38414.2.3 State(狀態)38514.2.4 Event(事件)38514.2.5 Action(動作)38614.2.6 變量38714.2.7 發送事件38814.3 自定義Action38814.4 小結391第15章 VR虛擬現實開發39215.1 VR簡介39315.2 設置HTC Vive開發環境39315.3 VR操作示例39415.3.1 創建VR場景39415.3.2 手柄控制器39515.4 小結397第16章 AR增強現實開發39816.1 AR和Vuforia39916.2 創建Vuforia工程39916.3 準備AR參考目標40116.4 設置AR參考目標40216.5 小結404第17章 Shader編程與後期特效40517.1 Shader簡介40617.2 渲染管線40617.3 ShaderLab語言40717.4 CG語言簡介40917.5 Vertex and Fragment Shader示例40917.5.1 顯示紋理和色彩40917.5.2 使用通道表現多個紋理41217.5.3 添加基本光照41417.5.4 UV動畫效果41517.5.5 黑白效果41617.5.6 簡單描邊效果41717.5.7 Alpha透明效果41917.6 屏幕特效示例42117.7 後期特效42317.8 小結424第18章 動態編程和Lua42518.1 動態語言簡介42618.2 動態讀取程序集實現熱更新42618.2.1 創建.dll文件42618.2.2 測試熱更新.dll文件42718.2.3 通過反射訪問.dll文件42818.3 Lua語言快速教程42918.3.1 MoonSharp和Lua開發環境的安裝42918.3.2 Lua提供的類型42918.3.3 Lua的判斷和循環語句43018.3.4 Lua的函數43118.3.5 Lua的IO操作43118.3.6 Lua的數組操作43218.3.7 Lua的字符串操作43318.3.8 Lua的協程43318.4 Lua與Unity的交互43518.4.1 在Unity中讀取Lua代碼43518.4.2 將Unity 功能導入到Lua中43618.5 Lua腳本的熱更新43718.6 小結438附錄A C#語言439A.1 C#基礎440A.1.1 C#簡介440A.1.2 運行控制臺程序440A.1.3 類型441A.1.4 內置類型441A.1.5 標識符442A.1.6 語句和表達式442A.1.7 變量和常量443A.1.8 枚舉443A.1.9 數學操作符443A.1.10 關繫操作符444A.1.11 邏輯操作符444A.1.12 操作符優先級445A.1.13 方法445A.1.14 遞歸446A.1.15 條件分支語句446A.1.16 循環語句447A.1.17操作符448A.1.18 預處理448A.2 面向對像編程449A.2.1 類449A.2.2 this關鍵字450A.2.3 封裝451A.2.4 繼承與多態452A.2.5 靜態成員454A.2.6 異常處理455A.3 字符串456A.4 數組458A.4.1 創建數組458A.4.2 遍歷數組和迭代器458A.5 基本I/O操作460A.5.1 寫文件460A.5.2 讀文件461A.5.3 刪除文件462A.5.4 二進制讀寫462A.6 泛型463A.6.1 實現泛型的基本語法463A.6.2 List的常見操作464A.6.3 List的排序465A.7 委托468A.7.1 委托468A.7.2 Lambda表達式469A.7.3 泛型委托470A.7.4 Action和Func470A.8 反射和特性471A.8.1 反射471A.8.2 特性471A.9 小結472附錄B 特殊文件夾473附錄C Unity編輯器菜單中英文對照475
本書以實例教學為主線,循序漸進地介紹了Unity 2018在手機遊戲開發方面的不同功能。第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兩款插件,第15章介紹了使用HTC Vive創建VR應用,第16章介紹了Unity結合Vuforia 在AR方面的應用,第17和第18章介紹了Shader圖形編程和Lua腳本在Unity中的應用。本書最後等
金璽曾 著
金璽曾,資深遊戲開發工程師,擁有10餘年遊戲行業從業經驗,先後在上海盛大網絡,上海愛客士電腦軟件,上海皿鎏軟件從事遊戲開發工作,參與過很多原創和外包項目。
編寫本書的目的Unity,也稱Unity 3D,是近幾年非常流行的一款3D遊戲開發引擎,它的特點是跨平臺能力強,支持PC、Mac、Linux、網頁、iOS、Android等平臺,移植便捷,3D圖形性能出眾,同時也支持2D功能,為眾多遊戲開發者所喜愛。在手機平臺,Unity幾乎成為3D、2D遊戲開發的標準工具。遊戲開發是一項復雜的工作,本書在編寫過程中十分注重與實際開發相結合,全書以實例為基礎,使讀者在較短的時間內能快速掌握Unity 2018的各種工具和開發技巧,並應用於實踐中。本書主要內容本書為第4版,總體上更新了大部分代碼和截圖,改進了細節,確保與Unity的新版本保持一致,下面是各章的內容概要。第1章介紹Unity編輯器的各個功能模塊,突出介紹了Unity的一些特點。第2章是一個太空射擊遊戲教程,這是一個入門級的教程,從如何創建一個腳本,到一個完整的遊戲有較為等