Unity應用開發與實戰(微課版)
-
【作 者】主 編 程永恒
【I S B N 】978-7-5170-9864-5
【責任編輯】石永峰
【適用讀者群】本專通用
【出版時間】2021-09-20
【開 本】16開
【裝幀信息】平裝(光膜)
【版 次】第1版第1次印刷
【頁 數】312
【千字數】474
【印 張】19.5
【定 價】¥59
【叢 書】普通高等教育新工科人才培養規劃教材(虛擬現實技術方向)
【備注信息】
簡介
本書特色
前言
章節列表
精彩閱讀
下載資源
相關圖書
隨著Unity的發展,Unity已經從一個輕量級的游戲引擎變成一個成熟的綜合性引擎,所涵蓋的領域也越來越多,包括游戲、VR/AR、電影與動畫、建筑工程等各個方面。本書從基礎入手,結合案例開發,使讀者掌握基礎的游戲開發。本書共8章,第1章至第4章為基礎知識部分,主要介紹Unity的基本操作、基本概念,物理系統和UI界面系統等。第5章是兩個小案例游戲,一個是小球滾動,另一個是自行車控制,作為入門小游戲開發,并融合前面所學的知識。接下來第6章是一個Unity經典案例游戲——星際飛船射擊游戲,綜合了Unity的大部分功能,完整地介紹Unity游戲開發流程。第7章動畫系統屬于Unity高級開發技術內容,主要了解人物的動畫控制。第8章是一個相對復雜的綜合性游戲,結合了人物、尋路追蹤、敵人設置等功能。本書案例的選擇都具有較強的代表性,通過本書的知識、案例學習,能具備基本游戲項目開發的能力。為了方便師生使用,本教材配有電子課件(PPT)以及案例源文件,另外讀者可掃描書中二維碼來獲得微課資源進行學習。
本書適合有一定C#程序設計基礎的初學者入門時使用,尤其適合作為高校數字媒體技術專業以及虛擬現實技術開發等專業的Unity入門教材。
本書配套資源可以從中國水利水電出版社網站(www.waterpub.com.cn)或萬水書苑網站(www.dgboyong.cn)免費下載。
面向基礎—以少學時、有C# 編程基礎的讀者作為學習對象
內容實用—采用“案例驅動”的編寫方式精心設計教學內容
提升技能—掌握Unity 基礎應用為前提,提升綜合開發能力
資源豐富—提供教學大綱、課件、微課、源代碼等配套資源
前 言
Unity引擎自創建以來,取得了長足的發展,迄今為止,能夠為開發者提供超過20個平臺創作和優化內容,在同類型的引擎產品中市場占有率第一。尤其在VR、AR領域,Unity能同時和各大廠商、各大合作伙伴一起更新迭代,確保在最新的版本和平臺上提供優化支持服務。
Unity在國內也受到了廣大開發者的喜愛,在網上各大論壇都有關于Unity的技術交流,也出現了很多關于Unity的學習資料和教學視頻。很多高校也逐漸開設了Unity的課程,越來越多的初學者想要接觸Unity,了解Unity。
市面上也有很多Unity的書籍和教材,但大都不適合當前的職業教育。本教材主要針對職業教育的Unity基礎課程來設計。第一,篇幅的選取。因為Unity涵蓋的內容太豐富,如果是作為基礎課程入門,結合課時量的考慮,講授的內容要有一定的取舍。第二,案例的選取。結合職業教育的特點,在講授了基本的概念性內容后,可以以案例為驅動進行案例教學,來融合之前的知識點,本教材的案例選取難度適中,循序漸進,在案例講授中逐步提高學生的開發水平,從而達到Unity開發入門的階段。第三,重難點突出。一個完整的Unity游戲項目,是藝術與技術的結合。在Unity引擎的各項技術中,雖然不包括建模功能,但有關于光照、渲染、粒子特效等計算機美術方面的內容。本教材的側重點在于開發入門,計算機美術方面的內容沒有過多介紹,讀者在了解了基礎開發后,可以自然地將計算機美術方面的內容融入到開發中去。
本書面向的是有一定C#語言編程基礎的同學,通過學習本教材,掌握基礎的Unity項目開發技術,也可以為后續的基于Unity引擎的VR、AR開發打下基礎。本教材中Unity引擎其他方面還未講授到的內容,可以通過查看Unity的官方文檔等內容自主學習。
本書的編者中既有高校教學經驗豐富的“雙師型教師”,也有企業一線工程師。本書由程永恒任主編,負責全書的統稿、修改、定稿工作,段雪琦、黃林荃任副主編。主要編寫人員分工如下:程永恒編寫了第1、2、3、5、7、8章,黃林荃編寫了第4章,段雪琦編寫了第6章。其中魯娟、夏敏老師以及一線的Unity企業開發人員李曉明也參與了編寫,并為本書的編寫提供了不少幫助。
本書的案例部分有完整的程序和導出資源包,并配套有教學資源庫,資源庫中的內容主要由微課、案例文檔,PPT等內容組成,幫助讀者在學習過程中更好地掌握知識,也可以為教學提供輔助。
由于編者的水平所限,書中難免有錯誤和疏漏的地方,懇請廣大讀者批評指正。
編 者
2021年6月
第1章 Unity概述 1
1.1 下載與安裝 1
1.1.1 下載Unity 1
1.1.2 安裝Unity 3
1.1.3 多版本共存 4
1.2 初次運行 4
1.2.1 新建工程 4
1.2.2 打開工程 6
1.2.3 學習資料頁面 7
1.3 場景視圖窗口 7
1.3.1 場景輔助線框 8
1.3.2 修改物體的位置 10
1.3.3 場景視圖工具條 16
1.4 輔助線框菜單 19
1.4.1 輔助線框 20
1.4.2 輔助圖標 21
1.4.3 高亮和顯示線框 21
1.4.4 內置組件的顯示 22
1.5 工具欄 22
1.6 游戲視圖窗口 22
1.6.1 播放和暫停 23
1.6.2 游戲視圖的工具條 24
1.6.3 自定義Unity的開發環境 25
1.7 層級窗口 26
1.7.1 父子關系 27
1.7.2 將物體設置為子物體 27
1.7.3 同時編輯多個場景 28
1.8 工程窗口 28
1.8.1 基本功能 28
1.8.2 搜索功能 29
1.8.3 快捷鍵 30
1.9 檢視窗口 31
1.9.1 檢視物體和選項 32
1.9.2 添加、刪除組件 32
1.9.3 復制組件或組件參數 33
1.9.4 查看腳本參數 33
1.9.5 查看素材 34
1.9.6 工程設置 35
1.9.7 修改組件的順序 36
1.10 Unity的常用快捷鍵 37
1.11 動手搭建游戲場景 39
1.12 小結 44
第2章 開始Unity開發 45
2.1 場景 45
2.2 內置的游戲物體 46
2.2.1 立方體 47
2.2.2 球體 48
2.2.3 膠囊體 48
2.2.4 柱體 49
2.2.5 平面 49
2.2.6 四邊形 50
2.3 組件 50
2.3.1 變換組件 51
2.3.2 其他組件 51
2.4 使用組件 52
2.4.1 添加組件 52
2.4.2 編輯組件 53
2.4.3 組件選項菜單 54
2.4.4 測試組件參數 54
2.5 最基本的組件——變換組件 55
2.5.1 屬性列表 55
2.5.2 編輯變換組件 55
2.5.3 父子關系 56
2.5.4 非等比縮放的問題 56
2.5.5 關于縮放和物體大小的問題 57
2.5.6 變換組件的其他注意事項 57
2.6 腳本與組件操作 58
2.6.1 創建和使用腳本 58
2.6.2 初識腳本 59
2.6.3 用腳本控制游戲物體 60
2.6.4 變量與檢視窗口 60
2.6.5 通過組件控制游戲物體 61
2.6.6 訪問其他游戲物體 62
2.6.7 常用的事件函數 65
2.6.8 創建和銷毀物體 67
2.6.9 使游戲物體或組件無效化 68
2.7 腳本組件的生命期 68
2.8 標簽 71
2.8.1 為物體設置標簽 72
2.8.2 創建新的標簽 72
2.9 靜態物體 73
2.10 層級 74
2.10.1 新建層級 74
2.10.2 為物體指定層級 74
2.11 預制體 75
2.11.1 使用預制體 76
2.11.2 通過游戲物體實例修改預制體 76
2.12 工程的保存 77
2.12.1 保存場景 77
2.12.2 保存工程 77
2.13 輸入 80
2.13.1 傳統輸入設備與虛擬輸入軸 80
2.13.2 移動設備的輸入 83
2.13.3 VR輸入概覽 85
2.14 方向與旋轉的表示方法 86
2.14.1 歐拉角 86
2.14.2 四元數 87
2.14.3 直接使用四元數 88
2.14.4 在動畫中表示旋轉 89
2.15 燈光 90
2.15.1 渲染路徑 91
2.15.2 燈光的種類 91
2.15.3 燈光設置 93
2.15.4 使用燈光 95
2.16 攝像機 96
2.16.1 屬性介紹 96
2.16.2 細節與渲染路徑 97
2.16.3 清除標記 98
2.16.4 剪切面 99
2.16.5 視圖矩形 99
2.16.6 渲染貼圖 100
2.16.7 顯示目標 101
2.16.8 其他提示 101
2.17 小結 101
第3章 物理系統 102
3.1 概述 102
3.1.1 剛體 103
3.1.2 休眠 103
3.1.3 碰撞體 103
3.1.4 物理材質 104
3.1.5 觸發器 104
3.1.6 碰撞與腳本行為 104
3.1.7 對碰撞體按照處理方式分類 105
3.1.8 碰撞事件觸發表 106
3.1.9 物理關節 106
3.1.10 角色控制器 107
3.2 剛體 107
3.2.1 屬性介紹 108
3.2.2 父子關系 109
3.2.3 腳本關系 109
3.2.4 剛體和動畫 109
3.2.5 組合碰撞體 109
3.2.6 連續碰撞檢測 110
3.2.7 比例和單位的重要性 111
3.2.8 其他方面 111
3.3 盒子碰撞體 112
3.4 膠囊碰撞體 112
3.5 網格碰撞體 113
3.5.1 屬性 114
3.5.2 限制條件和解決方法 114
3.5.3 其他方面 114
3.6 球體碰撞體 115
3.7 地形碰撞體 116
3.8 物理材質 116
3.9 固定關節 117
3.10 鉸鏈關節 118
3.11 彈簧關節 120
3.12 角色控制器 121
3.12.1 屬性 122
3.12.2 小技巧 122
3.13 常量力 123
3.14 車輪碰撞體 124
3.14.1 屬性 124
3.14.2 詳細說明 125
3.14.3 具體的設置方法 125
3.14.4 碰撞體的外形問題 126
3.14.5 車輪阻尼曲線 126
3.14.6 小技巧 126
3.15 車輛創建入門 127
3.15.1 創建車輛的基本框架 127
3.15.2 控制車輛 128
3.15.3 車輪的外觀 129
3.16 小結 131
第4章 圖形用戶界面——UI 132
4.1 UGUI圖形用戶界面系統 132
4.2 UGUI控件系統介紹 133
4.2.1 Canvas畫布 133
4.2.2 Text文本 135
4.2.3 Image圖像 136
4.2.4 Button按鈕 137
4.2.5 Toggle開關 139
4.2.6 Slider滑動條 141
4.2.7 Scrollbar滾動條 142
4.2.8 Input Field文本框 144
4.2.9 Dropdown下拉菜單 146
4.3 Rect Transform矩形變換 147
4.3.1 Pivot軸心點 147
4.3.2 Anchors錨框 148
4.4 UGUI界面布局實例—音樂
播放器UI 149
4.5 小結 158
第5章 綜合小案例 159
5.1 小球碰碰碰 159
5.1.1 場景準備 160
5.1.2 轉動的立方體 161
5.1.3 小球滾動 164
5.1.4 得分顯示與游戲結束 165
5.1.5 攝像頭的跟隨 168
5.2 自行車控制 169
5.2.1 資源導入 169
5.2.2 車輪控制 170
5.2.3 車把控制 174
5.2.4 車輛前進 174
5.2.5 攝像頭跟隨 175
5.3 小結 175
第6章 實戰案例:星際飛船游戲 176
6.1 創建游戲區域 176
6.1.1 創建項目 176
6.1.2 導入資源 177
6.1.3 添加游戲背景 177
6.2 制作飛船對象 180
6.2.1 創建飛船對象 180
6.2.2 實現鍵盤控制飛船移動 183
6.3 制作子彈 186
6.3.1 創建子彈 186
6.3.2 發射子彈 189
6.4 制作行星 191
6.4.1 創建行星 191
6.4.2 行星碰撞事件 193
6.4.3 行星運動 195
6.4.4 隨機生成行星 196
6.5 制作敵機 202
6.5.1 創建敵機 202
6.5.2 敵機Z字運動 203
6.5.3 制作敵機炮彈 205
6.5.4 隨機生成敵機 212
6.5.5 游戲優化 214
6.6 添加音頻 215
6.6.1 添加背景音 215
6.6.2 添加飛船子彈發射音效 216
6.6.3 添加敵機炮彈發射音效 216
6.6.4 添加行星爆炸音效 217
6.6.5 添加敵機爆炸音效 218
6.6.6 添加飛船爆炸音效 218
6.7 制作計分系統 218
6.7.1 創建計分文本控件 218
6.7.2 擊中行星后得分 219
6.7.3 擊中敵機后得分 220
6.8 判斷游戲結束 221
6.8.1 創建游戲結束文本控件 221
6.8.2 游戲結束 223
6.9 重新開始游戲 225
6.10 發布游戲 227
6.11 小結 228
第7章 Mecanim動畫系統 229
7.1 Mecanim動畫系統簡介 229
7.1.1 Mecanim動畫系統的工作流 229
7.1.2 Mecanim動畫系統中的術語 230
7.2 Mecanim動畫系統常用API介紹 231
7.2.1 與動畫狀態控制相關的API 231
7.2.2 Character Controller(角色控制器) 232
7.3 Animator Controller 234
7.3.1 創建場景 235
7.3.2 創建動畫控制器 236
7.3.3 角色運動控制 239
7.3.4 攝像機運動控制 241
7.3.5 添加提示文字 243
7.4 Crowd Simulation場景 243
7.4.1 創建場景 243
7.4.2 創建動畫控制器 244
7.4.3 生成人群 245
7.4.4 人群隨機運動的控制 247
7.5 Inverse Kinematics Example場景 249
7.5.1 創建場景 250
7.5.2 IK功能實現 251
7.6 Teddy Bear Bazooka場景 255
7.6.1 創建場景與動畫控制器 255
7.6.2 Teddy對象隨機運動的控制 257
7.6.3 抬放火箭炮控制 259
7.6.4 射擊的控制 263
7.7 小結 265
第8章 實戰案例:噩夢射擊游戲 266
8.1 分析需求及準備資源 266
8.1.1 資源準備 266
8.1.2 加載場景 267
8.2 游戲角色 269
8.2.1 添加游戲主角 269
8.2.2 游戲主角的運動設置 270
8.2.3 角色控制運動 270
8.2.4 攝像機跟隨 272
8.3 敵人的生成與配置 273
8.3.1 添加第一個敵人 273
8.3.2 添加運動腳本 276
8.4 設置主角生命值 277
8.4.1 主角的血條 277
8.4.2 主角生命值變化 279
8.4.3 主角受到傷害 281
8.5 射殺敵人 283
8.5.1 槍的設置 284
8.5.2 開槍射擊腳本 285
8.5.3 敵人被攻擊 288
8.5.4 更多敵人 291
8.6 得分系統 295
8.7 游戲結束與重啟 297
8.7.1 游戲結束圖文設置 297
8.7.2 結束畫面的動畫控制 298
8.7.3 游戲結束的腳本 301
8.7.4 游戲的重啟 301
8.8 小結 302
參考文獻 303
- 實用運籌學 [主編 邢育紅 于晉臣]
- 電子技術(第二版) [主編 覃愛娜 李飛]
- C程序設計實踐教程 [劉衛國]
- C程序設計(慕課版) [劉衛國]
- 程序設計基礎實踐教程(C/C++語言版) [張桂芬 葛麗娜]
- C++案例項目精講 [主編 楊國興]
- 勞動爭議處理實務 [主編 王秀卿 羅靜]
- 工程數學 [主編 郭立娟 王海]
- 語音識別理論與實踐 [主編 莫宏偉]
- 武術基礎教程 [主編 李代勇 謝志民]
- 計算機網絡實訓教程 [主編 張浩軍 趙玉娟]
- 畫法幾何與機械制圖習題集(多學時) [主編 趙軍]
- SwiftUI完全開發 [李智威 著]
- 電工電子技術基礎 [主編 劉 軍 楊國龍 劉天成]
- MySQL數據庫項目式教程 [陳亞峰]
- 機械設計基礎(第二版) [主編 田亞平 李愛姣]
- 畫法幾何與機械制圖 [主編 趙軍]
- C語言程序設計習題與實驗指導(第二版) [主編 甄增榮 張賓]
- C語言程序設計(第二版) [主編 甄增榮 田云霞]
- Unity3D虛擬現實應用開發實踐 [主 編 劉龍]
- 智能化技術基礎(第三版) [鄧文達 李禮]
- Python程序設計 [主編 姜春磊 陳虹潔]
- C語言程序設計實踐教程(活頁式) [主編 鄭茵 陳巍 滕泓虬]
- 面向對象程序設計 [主編 張勇 張平華 趙小龍]
- Python程序設計基礎及實戰 [主編 劉健]
- 網絡營銷 [主編 夏薇薇 劉婷 尚潔]
- C語言程序設計 [姜雪]
- Python程序設計實踐教程 [王鶴琴 蔡正保]
- 電視節目策劃與制作(微課版) [主 編 黃滴滴]
- 數據庫技術與應用實踐教程(SQL Server 2019) [主 編 嚴暉 周肆清]