《Unity 3D 完全自學教程》,具有比較完整的知識體系,適合初學Unity。既可以作為初學者的入門書籍,又可以作為進階者的查閱材料。
基本介紹
- 書名:Unity 3D 完全自學教程
- 作者:馬遙,陳虹松,林凡超
- ISBN: 978-7-121-35515-8
- 頁數:630
- 定價:89
- 出版社:電子工業出版社
- 出版時間:2019-03
- 裝幀:平裝
- 開本:16
內容簡介,目錄,作者簡介,
內容簡介
Unity 作為一個成熟的遊戲引擎,其設計和使用都是有層次的。《Unity 3D 完全自學教程》共 13 章,第 1 章至第 3 章為基礎知識部分,主要介紹 Unity 的基本操作、基本概念、編寫腳本的方法、導入和使用資源的方法,學完這部分內容後,你已經可以做出很多有趣的小遊戲了。第 4 章至第 11 章主要介紹 Unity 重要的系統模組、功能,包括物理系統、UI 界面系統、動畫系統、3D 數學基礎、場景管理、導航系統、著色器系統、打包與發布等,讀完以後可以掌握高級的開發技術並解決實際問題。第 12 章和第 13 章是兩個有代表性的 Unity遊戲示例,一個是 3D 跑酷遊戲,另一個是 2D 的彈球遊戲,綜合展示了 Unity 的大部分功能,具有較強的代表性。除了這些內容,每章都會有一些小的示例,以方便大家實踐並理解具體概念。由於實例部分的內容操作流程較多,不易用圖文展現,本書還特別附贈了視頻教程來方便讀者學習。
《Unity 3D 完全自學教程》適合廣大 Unity 初學者入門時使用,也適合 Unity 用戶查閱和參考軟體具體的使用方法、注意事項等,所以也可以作為一本 Unity 的參考手冊使用。
目錄
第 1 章 初識 Unity /. 1
1.1 下載與安裝 / 1
1.1.1 下載 Unity 安裝程式 / 1
1.1.2 安裝 Unity / 2
1.1.3 多版本並存 / 2
1.2 初次運行 / 2
1.2.1 工程頁面 / 2
1.2.2 學習資料頁面 / 3
1.2.3 新建工程 / 3
1.2.4 打開工程 / 3
1.3 工程視窗 / 4
1.3.1 基本功能 / 5
1.3.2 搜尋功能 / 5
1.3.3 搜尋資源商店 / 6
1.3.4 快捷鍵 / 7
1.4 場景視圖視窗 / 8
1.4.1 瀏覽場景 / 8
1.4.2 場景輔助線框 / 8
1.4.3 修改物體的位置 /. 10
1.4.4 場景視圖工具條 /. 14
1.5 輔助線框選單 / 16
1.5.1 輔助線框 / 16
1.5.2 輔助圖示 / 17
1.5.3 顯示格線 / 18
1.5.4 選中時高亮和選中框線 . 18
1.5.5 內置組件的顯示 /. 19
1.6 層級視窗 / 19
1.6.1 父子關係 / 19
1.6.2 將物體設定為子物體 20
1.6.3 同時編輯多個場景 /. 20
1.7 檢視視窗 / 20
1.7.1 檢視物體和選項 /.21
1.7.2 添加、刪除組件 /.21
1.7.3 複製組件或組件參數 22
1.7.4 查看腳本參數 /.22
1.7.5 查看素材 /23
1.7.6 工程設定 /24
1.7.7 修改組件的順序 /.24
1.8 工具列 /.25
1.9 遊戲視圖視窗 /25
1.9.1 播放和暫停 /26
1.9.2 遊戲視圖的工具條 /.26
1.9.3 自定義 Unity 的開發環境 27
1.10 Unity 的常用快捷鍵 /29
1.11 動手搭建遊戲場景/31
1.12 2D 與 3D 工程的區別 /36
1.13 總結 /37
第 2 章 開始 Unity 遊戲開發 / 39
2.1 場景 /39
2.1.1 場景的概念 /39
2.1.2 保存場景 /40
2.1.3 打開場景 /40
2.2 遊戲物體 /40
2.3 組件 /41
2.3.1 變換組件 /41
2.3.2 其他組件 /42
2.4 使用組件 /42
2.4.1 添加組件 /43
2.4.2 編輯組件 /44
2.4.3 組件選項選單 /45
2.4.4 測試組件參數 /45
2.5 最基本的組件 — 變換組件 /46
2.5.1 屬性列表 /46
2.5.2 編輯變換組件 /46
2.5.3 父子關係 /47
2.5.4 非等比縮放的問題 /47
2.5.5 關於縮放和物體大小的問題/48
2.5.6 變換組件的其他注意事項 / 48
2.6 腳本與組件操作 /49
2.6.1 創建和使用腳本 /49
2.6.2 初識腳本 / 49
2.6.3 用腳本控制遊戲物體 50
2.6.4 變數與檢視視窗 /51
2.6.5 通過組件控制遊戲物體 /52
2.6.6 訪問其他遊戲物體 /53
2.6.7 常用的事件函式 /.55
2.6.8 時間和幀率 / 56
2.6.9 創建和銷毀物體 /.57
2.6.10 使遊戲物體或組件無效化 /58
2.6.11 父物體無效化 / 58
2.7 腳本組件的生命期 /58
2.8 標籤 /61
2.8.1 為物體設定標籤 /61
2.8.2 創建新的標籤 /62
2.8.3 小提示 / 62
2.9 靜態物體 / 62
2.10 層級 /63
2.10.1 新建層級 / 63
2.10.2 為物體指定層級 /64
2.10.3 僅渲染場景的一部分 /64
2.10.4 選擇性的射線檢測 /65
2.11 預製體 / 66
2.11.1 使用預製體 / 66
2.11.2 通過遊戲物體實例修改預製體 /67
2.11.3 在運行時實例化預製體 /67
2.12 保存工程的注意事項 / 71
2.12.1 保存當前場景 / 71
2.12.2 保存工程 / 72
2.12.3 不需要保存的改動 /73
2.13 輸入 /74
2.13.1 傳統輸入設備與虛擬輸入軸 /74
2.13.2 移動設備的輸入 /77
2.13.3 VR 輸入概覽 / 81
2.14 方向與旋轉的表示方法 / 81
2.14.1 歐拉角 / 81
2.14.2 四元數 /82
2.14.3 直接使用四元數 /83
2.14.4 在動畫中表示旋轉 /84
2.15 燈光 /85
2.15.1 渲染路徑 /85
2.15.2 燈光的種類 /86
2.15.3 燈光設定詳解 /89
2.15.4 使用燈光 /90
2.16 攝像機 /91
2.16.1 屬性介紹 /91
2.16.2 細節 /93
2.16.3 渲染路徑 /93
2.16.4 清除標記 /93
2.16.5 剪下面 /95
2.16.6 剔除遮罩 /96
2.16.7 視圖矩形 /96
2.16.8 正交攝像機 /96
2.16.9 渲染貼圖 /96
2.16.10 顯示目標 /97
2.16.11 其他提示 /97
2.17 開始做遊戲吧 /97
第 3 章 資源工作流程 / 98
3.1 內置的基礎物體/98
3.1.1 立方體 /98
3.1.2 球體 /99
3.1.3 膠囊體 /99
3.1.4 柱體 /99
3.1.5 平面 /.100
3.1.6 四邊形 / 100
3.2 資源導入 / 101
3.3 資源導入設定 / 103
3.4 導入圖片資源的設定 / 103
3.4.1 圖片資源的導入方式 /103
3.4.2 圖片紋理的類型 /104
3.5 模型資源的導入流程 /110
3.5.1 導入人形動畫 / 111
3.5.2 導入非人形動畫 / 113
3.5.3 模型資源導入設定 /115
3.6 聲音資源的導入設定 / 137
3.7 從資源商店導入資源 / 137
3.7.1 進入資源商店和選購 /137
3.7.2 下載的資源檔案的存儲位置 /138
3.8 資源包 / 139
3.8.1 導入包 / 139
3.8.2 導出包 / 140
3.8.3 導出更新包 / 141
3.9 標準資源 / 142
第 4 章 物理 /143
4.1 簡介 /143
4.2 概述基本概念 /143
4.2.1 剛體 /143
4.2.2 休眠 /144
4.2.3 碰撞體 / 144
4.2.4 物理材質 / 145
4.2.5 觸發器 / 145
4.2.6 碰撞與腳本行為 /145
4.2.7 對碰撞體按照處理方式分類 /145
4.2.8 碰撞事件觸發表 /.146
4.2.9 物理關節 / 147
4.2.10 角色控制器 / 147
4.3 剛體 /148
4.3.1 屬性介紹 / 148
4.3.2 父子關係 / 149
4.3.3 腳本問題 / 149
4.3.4 剛體和動畫 / 149
4.3.5 剛體和碰撞體 /. 150
4.3.6 組合碰撞體 / 150
4.3.7 連續碰撞檢測 / 150
4.3.8 比例和單位的重要性 / 151
4.3.9 其他問題 / 152
4.4 盒子碰撞體 / 152
4.5 膠囊碰撞體 / 152
4.6 格線碰撞體 / 153
4.6.1 屬性 /153
4.6.2 限制條件和解決方法 / 154
4.6.3 其他問題 / 155
4.7 球體碰撞體 / 155
4.8 地形碰撞體 / 156
4.9 物理材質 / 156
4.10 固定關節 / 157
4.11 鉸鏈關節 / 158
4.12 彈簧關節 / 160
4.13 角色控制器 / 161
4.13.1 屬性 / 161
4.13.2 詳細說明 / 162
4.13.3 調整參數的技巧 / 162
4.13.4 防止角色被卡住 / 162
4.13.5 小技巧 / 163
4.14 常量力 / 163
4.14.1 屬性 / 163
4.14.2 小技巧 / 163
4.15 車輪碰撞體 / 163
4.15.1 屬性 / 164
4.15.2 詳細說明 / 164
4.15.3 具體的設定方法 /165
4.15.4 碰撞體的外形問題 /165
4.15.5 車輪阻尼曲線 /.165
4.15.6 小技巧 / 166
4.16 車輛創建入門 / 166
4.16.1 創建車輛的基本框架 / 166
4.16.2 可控制的車輛 / 167
4.16.3 車輪的外觀 /168
4.17 物理系統的實踐 / 169
4.17.1 不倒翁的製作 / 169
4.17.2 鎖鏈的製作 /.173
4.18 物理系統可視化調試/ 177
第 5 章 UI 界面 /181
5.1 UI 組件 /181
5.1.1 渲染組件 / 181
5.1.2 布局組件 / 183
5.1.3 顯示組件 / 185
5.1.4 互動組件 / 187
5.1.5 事件功能 / 196
5.2 UI 進階 /201
5.2.1 圖集 /.201
5.2.2 圖片格式 / 202
5.2.3 渲染順序 / 202
5.2.4 實現圓盤轉動的效果 /204
第 6 章 動畫 /.210
6.1 基礎概念 / 210
6.1.1 什麼是幀 / 210
6.1.2 模型動畫與非模型動畫 . 210
6.1.3 動畫混合的核心 — 插值與權重 211
6.2 Mecanim 動畫系統 /. 211
6.2.1 動畫系統的工作流 211
6.2.2 動畫剪輯 / 213
6.3 動畫控制器 / 223
6.3.1 動畫狀態機 / 223
6.3.2 動畫層級 / 228
6.3.3 動畫混合樹 / 228
6.4 使用人形角色動畫 /. 231
6.4.1 人形骨架映射 /. 231
6.4.2 人形動畫身體遮罩 234
6.4.3 人形動畫的重定向 235
6.4.4 逆向運動學 / 237
6.5 實踐:實現一個帶有動畫且操作流暢的角色控制器 238
6.5.1 創建工程 / 238
6.5.2 模型下載 / 239
6.5.3 創建動畫狀態機 /. 239
6.5.4 配置動畫狀態機 /. 241
6.5.5 代碼控制 / 243
第 7 章 遊戲開發的數學基礎 / 245
7.1 坐標系 / 245
7.1.1 左手坐標系、右手坐標系 /245
7.1.2 世界坐標系 / 246
7.1.3 局部坐標系 / 246
7.1.4 螢幕坐標系 / 247
7.2 向量 /248
7.2.1 向量的加法 / 248
7.2.2 向量的減法 / 248
7.2.3 點乘 /248
7.2.4 叉乘 / 249
7.2.5 Vector3 結構體 /249
7.2.6 位置與向量的區別和聯繫 /250
7.2.7 Vector3 的用法 /251
7.3 矩陣 /252
7.4 齊次坐標 / 253
7.5 四元數 / 253
7.5.1 概念 /253
7.5.2 結構體的簡介 /254
7.5.3 四元數的操作示例 /255
7.6 本章小結 / 258
第 8 章 場景管理 / 259
8.1 多場景編輯 / 259
8.1.1 在編輯器中打開多個場景 /259
8.1.2 場景分隔欄選單 /260
8.1.3 多場景烘焙光照貼圖 /261
8.1.4 多場景烘焙尋路格線 /261
8.1.5 多場景烘焙遮擋剔除信息 /261
8.1.6 多場景運行遊戲 /262
8.1.7 場景相關設定 /262
8.1.8 注意事項 / 262
8.2 運行時的場景管理 / 263
8.2.1 場景管理類 / 263
8.2.2 運行時切換場景 /263
8.2.3 切換場景時不銷毀遊戲物體 /265
8.2.4 異步載入場景 /266
第 9 章 導航系統 / 268
9.1 概述 /268
9.2 導航系統內部的工作機制 / 269
9.2.1 可行走區域 / 269
9.2.2 尋路算法 / 269
9.2.3 具體路徑 / 270
9.2.4 避開障礙 / 270
9.2.5 讓代理移動 / 270
9.2.6 全局導航與局部導航 /270
9.2.7 障礙的兩個例子 /. 271
9.2.8 連結關係 / 271
9.3 導航系統的構建組件 / 271
9.3.1 導航代理組件 / 271
9.3.2 導航障礙物 / 273
9.3.3 格線連結組件 /.274
9.4 構建導航格線 /275
9.5 創建導航代理 /277
9.6 創建導航障礙物 /278
9.7 創建格線連結 /.279
9.8 自動構建格線連結 /.280
9.9 建立高度格線 / 281
9.10 導航區域和移動成本 / 282
9.10.1 尋路成本 / 283
9.10.2 區域類型 / 283
9.10.3 區域掩碼 / 284
9.11 新版導航系統組件 / 284
9.11.1 導航格線表面組件 /284
9.11.2 導航格線修正組件 /286
9.11.3 導航修正區域組件 /287
9.11.4 導航格線連結組件 /287
9.11.5 構建導航格線的 API /289
9.12 與其他組件一起使用的問題 /291
9.12.1 導航代理組件與物理組件混用 /291
9.12.2 導航格線組件與動畫組件混用 /291
第 10 章 著色器 / 293
10.1 Unity 著色器的簡介 / 293
10.2 編寫表面著色器/ 293
10.2.1 簡介 / 294
10.2.2 預處理指令 /295
10.2.3 表面著色器的輸入結構體 / 297
10.3 ShaderLab 簡介 /297
10.3.1 語法 / 298
10.3.2 屬性 / 298
10.3.3 子著色器與回滾 /298
10.3.4 例子 /298
10.4 材質、著色器、貼圖的關係 /299
10.5 表面著色器的實例 / 300
10.5.1 從最簡單的例子開始 /300
10.5.2 貼圖 / 301
10.5.3 法線貼圖 / 302
10.5.4 邊緣發光 / 303
10.5.5 細節貼圖 / 304
10.5.6 螢幕空間中的細節貼圖 /305
10.5.7 立方體反射 / 306
10.5.8 世界空間切片 /307
10.5.9 修改頂點的位置 /308
10.5.10 逐頂點的數據處理 /309
10.5.11 調整最終顏色 / 310
10.5.12 霧 / 311
10.5.13 總結 / 312
第 11 章 打包與發布 / 313
11.1 打包設定 / 313
11.2 發布設定選單 /313
11.3 發布為桌面程式/ 314
11.4 發布時的內部流程/ 314
11.5 發布為安卓應用程式/.315
11.5.1 JDK 概述 / 315
11.5.2 JDK 的下載、安裝 /315
11.5.3 配置環境變數 /316
11.5.4 SDK 概述 /317
11.5.5 下載安卓 SDK / 317
11.5.6 導出設定 / 319
第 12 章 示例教程——跑酷遊戲 / 323
12.1 準備工具 / 323
12.2 分析需求 / 323
12.3 控制人物動作 /323
12.4 生成地圖 / 324
12.4.1 創建地圖模板 /324
12.4.2 設定地圖生成規則 /325
12.4.3 使地圖運動 /326
12.4.4 生成道具 / 329
12.4.5 複雜地形 / 330
12.5 控制人物 / 333
12.5.1 分析人物動作 / 333
12.5.2 添加角色控制器 /333
12.5.3 向前移動 / 333
12.5.4 左右移動 / 334
12.5.5 左轉與右轉 /334
12.5.6 跳躍與下滑 /334
12.5.7 播放道路動畫 /335
12.6 遊戲音效 / 336
12.6.1 背景音效 / 336
12.6.2 道具音效 / 336
12.7 顯示得分 / 337
12.8 觸摸控制 / 338
12.8.1 向量的點乘 /338
12.8.2 代碼實現 / 339
第 13 章 示例教程——2D 物理彈球 /343
13.1 遊戲玩法 / 343
13.2 分析需求 / 345
13.3 搭建場景 / 345
13.3.1 砌牆(限定小球的活動區域)/345
13.3.2 創建槍口(用於初始化小球的發射位置)/346
13.3.3 顯示分數 / 347
13.3.4 創建小球 / 347
13.3.5 創建道具預製件 /347
13.3.6 創建幾何圖形 /352
13.3.7 創建關卡 / 353
13.3.8 發射 / 359
13.3.9 小球尋路 / 362
13.3.10 選單面板 / 364
13.3.11 總結 / 366
作者簡介
馬遙:曾在像素軟體公司開發大型網路遊戲《尋仙》,創業時期曾主持開發多款手遊和HTML 5遊戲。後期專注於高性能遊戲伺服器的設計。平時喜歡研究動態語言和算法,擅長講解複雜的算法和概念。