編寫游戲能獲得較豐厚的回報并且充滿樂趣使用Unity,很容易上手編寫游戲!Unity會為我們處理繁重的工作,所以你可以專注于游戲玩法、圖像和用戶體驗。C#的支持和一個龐大的預(yù)構(gòu)建組件生態(tài)系統(tǒng)甚至可以幫助開發(fā)新手快速從繪圖板轉(zhuǎn)向屏幕。 《Unity實戰(zhàn)(第3版)》介紹如何使用Unity游戲平臺創(chuàng)建游戲。其中包含的許多2D、3D和AR/VR游戲示例能讓你親身體驗Unity的工作流程和**進(jìn)的渲染引擎。《Unity實戰(zhàn)(第3版)》已完全更新,介紹了Unity的XR工具包,展示了如何開始構(gòu)建VR和AR應(yīng)用。 ● 創(chuàng)建跑、跳、撞東西的角色 ● 用AI編寫敵人腳本 ● 播放音樂和空間感知音效 ● 將游戲部署到桌面、手機和網(wǎng)頁上
2021年對游戲行業(yè)而言是收獲滿滿的一年。游戲的發(fā)行數(shù)量達(dá)到前所未有的水
平,收入增加,玩家也找到了自己喜愛的游戲。隨著全球經(jīng)濟(jì)與社會生活都逐漸從疫情中恢復(fù),游戲行業(yè)也繼續(xù)尋找前進(jìn)的道路。在未來一年以及更長時間里游戲行業(yè)將呈現(xiàn)以下六種趨勢:
●游戲壽命將 會延長。
●跨平臺多人游戲?qū)⒏毡椤?br />●移動多人游戲?qū)⒃谖磥硎瓿蔀樾袠I(yè)內(nèi)標(biāo)準(zhǔn)。
●獨立開發(fā)者和中小型市場開發(fā)者將會越來越注重創(chuàng)新,為玩家?guī)砀悄艿?br />體驗。
●對專業(yè)工具和第三方專業(yè)知識的采用將會增多。
●元宇宙和區(qū)塊鏈將進(jìn)入測試,但尚未被完全接納。
Unity平臺上有大量頗具價值的學(xué)習(xí)資源,但這些資源比較零散,需要進(jìn)行深度
挖掘才能找到所需的內(nèi)容。而本書把初學(xué)者需要了解的所有內(nèi)容都放在一起,以清晰、富有邏輯的方式呈現(xiàn)出來,為初學(xué)者打開了游戲編程的大門。尤其是通過學(xué)習(xí)本書的實踐部分,讀者很快就可以開始編寫代碼不只是編寫書中的示例代碼,還可以編寫自己的游戲代碼,因為本書并不僅僅是簡單地完成游戲示例所需的功能代碼,還對代碼進(jìn)行重構(gòu),提升可擴(kuò)展性和復(fù)用性。
雖然我從事游戲編寫工作已很長時間了,但最近才開始使用Unity。當(dāng)我開始開發(fā)游戲時,Unity 尚未出現(xiàn),它的第1 版在2005 年發(fā)布。從一開始,它就承諾要作為游戲開發(fā)工具,但直到發(fā)布了幾個版本,它也沒有實現(xiàn)諾言。iOS 和Android 等平臺(統(tǒng)稱為移動平臺)是后來才出現(xiàn)的,這些平臺在很大程度上促成了Unity 日益突出的地位。
最初,我將Unity 視為一個有趣的開發(fā)工具,我關(guān)注它,但并不真正使用它。那段時間,我在為桌面計算機、網(wǎng)站編寫游戲,為各種客戶端開發(fā)項目。我使用過Blitz3D和Flash 等工具,它們很適合編程,但有諸多限制。隨著這些工具開始過時,我一直在尋找更好的游戲開發(fā)方法。
我從Unity 3 開始體驗,后來在Synapse Games 的開發(fā)工作中就完全轉(zhuǎn)向了Unity。最初是為Synapse 開發(fā)網(wǎng)頁游戲,最終轉(zhuǎn)向了移動游戲。然后,我們進(jìn)入游戲開發(fā)的完整生命周期,因為Unity 使我們能夠從同一個代碼庫部署到網(wǎng)頁和移動平臺!
我一直認(rèn)為分享知識很重要,講授游戲開發(fā)課程也有好幾年了。這么做的主要原因是很多導(dǎo)師和老師的言傳身教對我的影響(順便說一句,我的老師Randy Pausch 是如此鼓舞人心,他在2008 年去世前不久發(fā)表了名為The Last Lecture 公開演講)。我曾在多所學(xué)校授課,而我一直以來都想寫一本關(guān)于游戲開發(fā)的書。
本書的許多方面都是我第一次學(xué)習(xí)Unity 時所期望獲得的學(xué)習(xí)內(nèi)容。Unity 的眾多優(yōu)點之一是有大量有價值的學(xué)習(xí)資源,但這些資源比較零散(諸如腳本參考或獨立的教程),需要讀者進(jìn)行深度挖掘才能找到需要的內(nèi)容。最好有一本書,能把需要了解的所有內(nèi)容都放在一起,以清晰、合乎邏輯的方式呈現(xiàn)出來,這就是本書的目標(biāo)。本書的讀者對象是對Unity 很陌生的編程老手,以及游戲開發(fā)新手。書中選取的項目則反映了我通過快速連續(xù)地完成各種自由項目獲得技能和信心的經(jīng)驗。
學(xué)習(xí)使用Unity 開發(fā)游戲是一次激動人心的冒險。對我來說,學(xué)習(xí)如何開發(fā)游戲意味著要忍受很多麻煩;但對讀者而言,擁有了本書則意味著擁有了一份清晰簡明的學(xué)習(xí)資源。
關(guān) 于 本 書
本書適用對象
本書介紹如何使用Unity 編寫游戲。有經(jīng)驗的程序員可以把它當(dāng)成Unity 的入門書籍。本書的目標(biāo)十分明確:帶領(lǐng)有一些編程經(jīng)驗但沒有Unity 經(jīng)驗的讀者使用Unity開發(fā)游戲。
講授開發(fā)最好的方式是完成示例項目,學(xué)生通過制作示例來學(xué)習(xí),這正是本書采用的方式。本書的各個主題展現(xiàn)為構(gòu)建游戲示例的步驟,當(dāng)瀏覽本書時,鼓勵讀者在Unity 中構(gòu)建這些游戲。不同于其他書籍,本書每幾章便挑選不同的項目來講解,而不是整本書只開發(fā)一個項目。其他有些書籍采用一個完整項目的方法進(jìn)行講解,
不足之處是如果對前面的章節(jié)不感興趣,就很難跳到中間的章節(jié)。
本書比大多數(shù)Unity 書籍(特別是入門書籍)都更加注重嚴(yán)格的編程內(nèi)容。Unity 通常被描述成不需要編程的功能集合,這是一個錯誤的觀點,它無法讓人們明白制作一款商業(yè)游戲都需要學(xué)會哪些知識。如果不知道如何編寫計算機程序,最好先使用免費互動編碼網(wǎng)站(詳見鏈接[1])之類的資源進(jìn)行學(xué)習(xí),學(xué)習(xí)完編程后再回來看本書。
不必?fù)?dān)心具體的編程語言,本書通篇使用了C#,但其他編程語言的技能也可以派上用場。本書的第Ⅰ部分會占用一定篇幅介紹新的概念,并仔細(xì)地引導(dǎo)讀者在Unity中開發(fā)第一款游戲,但剩下的章節(jié)將更快地推進(jìn),讓讀者了解多種游戲類型的項目。
本書最后會描述如何將游戲部署到各種平臺(如Web 和移動平臺),但本書的重點不會涉及最終的部署目標(biāo),因為Unity 與平臺無關(guān)。
至于游戲開發(fā)的其他方面,藝術(shù)學(xué)科的廣泛覆蓋會減少本書專業(yè)方面的介紹,而涉及更多的Unity 外部軟件(例如,所使用的動畫軟件)。所以關(guān)于美術(shù)任務(wù)的討論將僅限于Unity 或所有游戲開發(fā)者都應(yīng)知道的方面(請注意,附錄C 是關(guān)于自定義對象建模的)。
學(xué)習(xí)路線圖
第1 章 介紹跨平臺的游戲開發(fā)環(huán)境Unity。你將學(xué)習(xí)Unity 中所有對象所基于的組件系統(tǒng),以及如何編寫和運行基本腳本。
第2 章 演示在3D 中編寫移動示例的步驟,涵蓋鼠標(biāo)和鍵盤輸入等主題。全面解釋3D 位置和旋轉(zhuǎn)的定義和管理。
第3 章 將移動示例轉(zhuǎn)變?yōu)榈谝蝗朔Q射擊游戲,講解射線投射和基礎(chǔ)AI。射線投射(向場景投射一條線,并觀察相交情況)是所有類型游戲中很有用的操作。
第4 章 涵蓋了美術(shù)資源的導(dǎo)入和創(chuàng)建。本章不關(guān)注代碼,因為每個項目都需要(基本)模型和貼圖。
第5 章 學(xué)習(xí)如何在Unity 中創(chuàng)建2D 益智游戲。盡管Unity 開始時僅包括3D 圖形,但現(xiàn)在也能很好地支持2D 圖形。
第6 章 用平臺游戲機制擴(kuò)展2D 游戲。特別是,實現(xiàn)玩家的控制、物理和動畫。
第7 章 介紹Unity 中最新的GUI 功能。每個游戲都需要UI,而最新版本的Unity為創(chuàng)建UI 提供了一個改進(jìn)的系統(tǒng)。
第8 章 展示如何在3D 中創(chuàng)建另一種移動游戲,此時從第三人稱的視角看到場景。實現(xiàn)第三人稱控制將展示一系列3D 數(shù)學(xué)操作,學(xué)習(xí)如何使用帶動畫的角色。
第9 章 瀏覽如何在游戲中實現(xiàn)交互設(shè)備和物品。玩家有很多方式操作這些設(shè)備,包括直接觸摸它們,接觸游戲中的觸發(fā)器,或者是按下控制器的某個按鈕。
第10 章 涵蓋了如何與互聯(lián)網(wǎng)通信。學(xué)習(xí)如何使用標(biāo)準(zhǔn)互聯(lián)網(wǎng)技術(shù)來發(fā)送和接收消息。例如HTTP 請求,從服務(wù)器獲取XML 或JSON 數(shù)據(jù)。
第11 章 介紹如何編寫音頻功能。Unity 對短音效和長音軌提供了很好的支持,這兩種類型的音頻對于所有電子游戲都很重要。
第12 章 將不同章節(jié)的碎片整合到一個游戲中。此外,你還將學(xué)習(xí)如何編程實現(xiàn)點擊控制,以及如何保存玩家的進(jìn)度。
第13 章 構(gòu)建最終應(yīng)用并發(fā)布到多個平臺,如桌面、網(wǎng)頁和移動,甚至VR。總之,Unity 使你能夠為每個主流的游戲平臺創(chuàng)建游戲。
本書最后還提供了4 個附錄,分別介紹場景導(dǎo)航、外部工具、Blender 和學(xué)習(xí)資源。
關(guān)于代碼和鏈接
本書的所有源代碼,不管是代碼清單或是片段,都使用等寬字體,以便與周圍的文本區(qū)別開來。在大多數(shù)代碼清單中,代碼都通過注釋指出關(guān)鍵概念,而編號有時用于在文本中提供關(guān)于代碼的額外信息。代碼是經(jīng)過格式化的,通過合理地增加換行和縮進(jìn),以適應(yīng)本書可用的頁面空間。
學(xué)習(xí)本書唯一需要的軟件是Unity,本書使用的是Unity 2020.3.12,它是編寫本書時的最新版本。某些章節(jié)偶爾討論其他軟件,但那些僅作為可選的額外部分,而非核心的學(xué)習(xí)內(nèi)容。
警告 Unity 項目會記住它們是在哪個版本的Unity 中創(chuàng)建的,如果嘗試在不同版本的Unity 中打開它們,會顯示警告。如果打開本書下載的示例時看到警告,請單擊Continue 按鈕并忽略它。
本書的代碼清單通常展示了在已有的代碼文件中應(yīng)該添加或修改的內(nèi)容,除非是首次出現(xiàn)的代碼文件,否則不要用后來的清單覆蓋整個文件。盡管可以下載書中引用的完整示例項目,但最好手動輸入代碼清單中的內(nèi)容,并觀察所引用的示例?蓮腉itHub(見鏈接[2])下載書中的示例,也可掃描本書封底的二維碼獲取本書的示例文件。
在此要說明的是,讀者在閱讀本書時會看到一些有關(guān)鏈接的編號,形式是數(shù)字編碼加方括號,例如,[1]表示讀者可掃描封底二維碼下載Links 文件,在其中可找到章節(jié)中的[1]所指向的鏈接。
Joseph Hocking 是一位專門從事交互式媒體開發(fā)的軟件工程師。他目前在高通公司工作,在BUNDLAR 工作時編寫了本書第3 版的大部分內(nèi)容,在Synapse Games 工作時編寫了本書的第1 版。他還曾在伊利諾伊大學(xué)芝加哥分校、芝加哥藝術(shù)學(xué)
院和芝加哥哥倫比亞學(xué)院授課。他與妻子和兩個孩子住在芝加哥郊區(qū)。更多信息可以訪問他的個人網(wǎng)站(見鏈接[1])。
第Ⅰ部分 起步
第1 章 初識Unity.3
1.1 為什么Unity 如此優(yōu)秀4
1.1.1 Unity 的優(yōu)勢4
1.1.2 要意識到的缺點6
1.1.3 使用Unity 構(gòu)建的游戲示例7
1.2 如何使用Unity10
1.2.1 Scene 視圖、Game 視圖和工具欄12
1.2.2 使用鼠標(biāo)和鍵盤.14
1.2.3 Hierarchy 視圖和Inspector面板14
1.2.4 Project 和Console 標(biāo)簽.15
1.3 開始使用Unity 編程16
1.3.1 在Unity 中運行代碼:腳本組件16
1.3.2 使用附帶的IDE:Visual Studio.18
1.3.3 打印到Console 視圖:Hello World!19
1.4 小結(jié)21
第2 章 構(gòu)建一個令人置身3D 空間的演示游戲.23
2.1 在開始之前24
2.1.1 對項目做計劃24
2.1.2 了解3D 坐標(biāo)空間.25
2.2 開始項目:在場景中放置對象 27
2.2.1 布景:地面、外墻和內(nèi)墻 27
2.2.2 光源和攝像機. 29
2.2.3 玩家的碰撞器和視點. 31
2.3 移動對象:應(yīng)用變換的腳本 32
2.3.1 圖示說明如何通過編程實現(xiàn)移動 32
2.3.2 編程實現(xiàn)圖中演示的運動 32
2.3.3 理解局部和全局坐標(biāo)空間 34
2.4 用于觀察周圍情況的腳本組件:MouseLook. 35
2.4.1 跟蹤鼠標(biāo)移動的水平旋轉(zhuǎn) 37
2.4.2 有限制的垂直旋轉(zhuǎn) 38
2.4.3 同時進(jìn)行水平和垂直旋轉(zhuǎn) 40
2.5 鍵盤輸入組件:第一人稱控制 42
2.5.1 響應(yīng)按鍵. 43
2.5.2 設(shè)置獨立于計算機運行速度的移動速率 44
2.5.3 移動CharacterController以檢測碰撞 44
2.5.4 將組件調(diào)整為走路而不是飛翔46
2.6 小結(jié)48
第3 章 在3D 游戲中添加敵人和子彈.49
3.1 通過射線投射射擊50
3.1.1 什么是射線投射.50
3.1.2 使用ScreenPointToRay命令射擊.51
3.1.3 為瞄準(zhǔn)點和擊中點添加可視化指示器53
3.2 編寫反應(yīng)性目標(biāo)腳本.56
3.2.1 確定被擊中的對象56
3.2.2 警告目標(biāo)被擊中.57
3.3 漫游AI 基礎(chǔ)58
3.3.1 圖解基礎(chǔ)AI 的工作原理.58
3.3.2 使用射線投射發(fā)現(xiàn)障礙物59
3.3.3 跟蹤角色的狀態(tài).61
3.4 生成敵人預(yù)制體62
3.4.1 什么是預(yù)制體63
3.4.2 創(chuàng)建敵人預(yù)制體.63
3.4.3 在不可見的Scene Controller 中實例化.64
3.5 通過實例化對象進(jìn)行射擊.67
3.5.1 創(chuàng)建子彈預(yù)制體.67
3.5.2 發(fā)射子彈并和目標(biāo)碰撞69
3.5.3 傷害玩家.71
3.6 小結(jié)72
第4 章 為游戲開發(fā)圖形.73
4.1 了解美術(shù)資源.73
4.2 構(gòu)建基礎(chǔ)3D 場景:白盒76
4.2.1 白盒的解釋76
4.2.2 為關(guān)卡繪制平面圖 77
4.2.3 根據(jù)平面圖布局幾何體 77
4.3 使用2D 圖像為場景貼圖. 79
4.3.1 選擇文件格式. 80
4.3.2 導(dǎo)入圖像文件. 81
4.3.3 應(yīng)用圖像. 83
4.4 使用貼圖圖像產(chǎn)生天空視覺效果 84
4.4.1 什么是天空盒. 84
4.4.2 新建天空盒材質(zhì) 85
4.5 使用自定義3D 模型 87
4.5.1 選擇文件格式. 88
4.5.2 導(dǎo)出和導(dǎo)入模型 89
4.6 使用粒子系統(tǒng)創(chuàng)建效果 91
4.6.1 調(diào)整默認(rèn)效果的參數(shù). 92
4.6.2 為火焰應(yīng)用新貼圖 94
4.6.3 將粒子效果附加到3D對象上 95
4.7 小結(jié) 96
第Ⅱ部分 輕松工作
第5 章 使用Unity 的2D 功能構(gòu)建一款記憶力游戲.99
5.1 設(shè)置2D 圖形100
5.1.1 為項目做準(zhǔn)備100
5.1.2 顯示2D 圖像(sprite).103
5.1.3 將攝像機切換為2D模式.104
5.2 構(gòu)建卡片對象并使它響應(yīng)單擊106
5.2.1 用sprite 構(gòu)建對象.106
5.2.2 鼠標(biāo)輸入代碼107
5.2.3 當(dāng)單擊時顯示卡片正面.107
5.3 顯示不同的卡片圖像. 108
5.3.1 通過編程加載圖像 109
5.3.2 通過不可見的Scene
Controller 設(shè)置圖像. 110
5.3.3 實例化卡片的網(wǎng)格 112
5.3.4 打亂卡片. 113
5.4 實現(xiàn)匹配并為匹配評分 114
5.4.1 保存并比較翻開的卡片 115
5.4.2 隱藏不匹配的卡片 116
5.4.3 分?jǐn)?shù)的文本顯示. 117
5.5 重啟按鈕 119
5.5.1 使用SendMessage編寫UIButton 組件. 119
5.5.2 從SceneController 中調(diào)用LoadScene 121
5.6 小結(jié) 122
第6 章 創(chuàng)建基本的2D 平臺游戲 123
6.1 設(shè)置圖形 124
6.1.1 放置墻壁和地面. 124
6.1.2 導(dǎo)入sprite sheet 125
6.2 左右移動玩家. 126
6.2.1 編寫鍵盤控制 127
6.2.2 與墻壁碰撞 128
6.3 播放sprite 動畫. 129
6.3.1 講解Mecanim 動畫系統(tǒng) 129
6.3.2 在代碼中觸發(fā)動畫的播放 131
6.4 添加跳躍功能. 132
6.4.1 因重力而下落 132
6.4.2 實現(xiàn)向上躍動 133
6.4.3 檢測地面. 134
6.5 平臺游戲的附加功能. 135
6.5.1 不同尋常的地面:斜坡和單向平臺.136
6.5.2 實現(xiàn)移動的平臺.137
6.5.3 攝像機控制140
6.6 小結(jié)141
第7 章 在游戲中放置GUI143
7.1 在開始寫代碼之前.144
7.1.1 立即模式GUI 還是高級2D 界面144
7.1.2 規(guī)劃布局146
7.1.3 導(dǎo)入UI 圖像.146
7.2 設(shè)置GUI 顯示147
7.2.1 為界面創(chuàng)建畫布.147
7.2.2 按鈕、圖像和文本標(biāo)簽.148
7.2.3 控制UI 元素的位置.151
7.3 編程實現(xiàn)UI 中的交互153
7.3.1 編程實現(xiàn)不可見的UIController154
7.3.2 創(chuàng)建彈出窗口155
7.3.3 使用滑動條和輸入字段設(shè)置值159
7.4 通過響應(yīng)事件更新游戲161
7.4.1 集成事件系統(tǒng)162
7.4.2 從場景中廣播和監(jiān)聽事件.162
7.4.3 從HUD 廣播和監(jiān)聽事件.163
7.5 小結(jié)165
第8 章 創(chuàng)建第三人稱3D 游戲:玩家移動和動畫.167
8.1 將攝像機視圖調(diào)整為第三人稱視角169
8.1.1 導(dǎo)入用于觀察的角色. 170
8.1.2 將陰影添加到場景 171
8.1.3 圍繞玩家角色旋轉(zhuǎn)攝像機 172
8.2 編程控制攝像機的相對移動 175
8.2.1 旋轉(zhuǎn)角色以面向移動方向 176
8.2.2 朝某方向前進(jìn) 178
8.3 實現(xiàn)跳躍動作. 179
8.3.1 應(yīng)用垂直速度和加速度 180
8.3.2 修改地面檢測來處理邊緣和斜坡 181
8.4 設(shè)置玩家角色上的動畫 185
8.4.1 在導(dǎo)入的模型上定義動畫剪輯 187
8.4.2 創(chuàng)建動畫控制器. 188
8.4.3 編寫操作Animator 組件的代碼 192
8.5 小結(jié) 193
第9 章 在游戲中添加交互設(shè)施和物件. 195
9.1 創(chuàng)建門和其他設(shè)施 196
9.1.1 用按鍵控制開關(guān)的門. 196
9.1.2 在開門之前檢查距離和朝向 197
9.1.3 創(chuàng)建變色監(jiān)控器. 199
9.2 通過碰撞與對象交互. 200
9.2.1 和具有物理屬性的障礙物碰撞 201
9.2.2 用觸發(fā)器對象操作門. 202
9.2.3 收集當(dāng)前關(guān)卡散落的物件 205
9.3 管理倉庫數(shù)據(jù)和游戲狀態(tài).206
9.3.1 設(shè)置玩家和倉庫管理器.207
9.3.2 編程實現(xiàn)游戲管理器208
9.3.3 把物品存儲在集合對象中:List 與Dictionary.212
9.4 用于使用和裝備物品的倉庫UI215
9.4.1 在UI 中顯示倉庫物品215
9.4.2 裝備用于開門的鑰匙217
9.4.3 使用血量包恢復(fù)玩家的血量.219
9.5 小結(jié)220
第Ⅲ部分 沖刺階段
第10 章 將游戲連接到互聯(lián)網(wǎng).223
10.1 創(chuàng)建戶外場景224
10.1.1 使用天空盒生成天空視覺效果.225
10.1.2 通過代碼設(shè)置氛圍226
10.2 從互聯(lián)網(wǎng)服務(wù)下載天氣數(shù)據(jù).228
10.2.1 使用協(xié)程請求HTTP數(shù)據(jù)231
10.2.2 解析XML .235
10.2.3 解析JSON.236
10.2.4 基于天氣數(shù)據(jù)更新場景239
10.3 添加網(wǎng)絡(luò)布告欄240
10.3.1 從互聯(lián)網(wǎng)加載圖像240
10.3.2 在布告欄上顯示圖像.243
10.3.3 緩存下載的圖像以供重用244
10.4 將數(shù)據(jù)發(fā)送到Web服務(wù)器. 246
10.4.1 跟蹤當(dāng)前的天氣:發(fā)送post 請求. 247
10.4.2 PHP 中的服務(wù)器端代碼 248
10.5 小結(jié) 249
第11 章 播放音頻:音效和音樂 251
11.1 導(dǎo)入音效 252
11.1.1 支持的文件格式 252
11.1.2 導(dǎo)入音頻文件. 254
11.2 播放音效 255
11.2.1 音頻剪輯、音源和聲音監(jiān)聽器 255
11.2.2 設(shè)定循環(huán)播放的聲音 256
11.2.3 用代碼觸發(fā)音效 257
11.3 使用音頻控制接口. 258
11.3.1 建立中心Audio Manager 259
11.3.2 音量控制UI. 261
11.3.3 播放UI 聲音 264
11.4 添加背景音樂 265
11.4.1 播放循環(huán)音樂. 266
11.4.2 獨立控制音樂的音量 269
11.4.3 背景音樂的淡入淡出 271
11.5 小結(jié) 274
第12 章 將各部分整合為一個完整的游戲 275
12.1 再次利用項目構(gòu)建動作RPG 演示游戲. 276
12.1.1 將多個項目的資源和代碼裝配在一起277
12.1.2 編程實現(xiàn)點擊控制:角色移動和設(shè)備操控.279
12.1.3 使用新界面替換舊GUI.285
12.2 開發(fā)總體游戲結(jié)構(gòu).291
12.2.1 控制任務(wù)流和多個關(guān)卡292
12.2.2 到達(dá)出口,完成一個關(guān)卡296
12.2.3 被敵人捉到時闖關(guān)失敗298
12.3 處理玩家在游戲過程中的進(jìn)度.299
12.3.1 保存并加載玩家進(jìn)度299
12.3.2 完成三個關(guān)卡,游戲通關(guān)303
12.4 小結(jié).305
第13 章 將游戲部署到玩家設(shè)備上307
13.1 構(gòu)建到桌面端:Windows、Mac 和Linux.309
13.1.1 構(gòu)建應(yīng)用程序.310
13.1.2 調(diào)整Player Settings:設(shè)置游戲的名稱和圖標(biāo)311
13.1.3 平臺依賴的編譯311
13.2 構(gòu)建到Web 端.313
13.2.1 構(gòu)建嵌入網(wǎng)頁的游戲314
13.2.2 與瀏覽器中的JavaScript通信 314
13.3 構(gòu)建到移動端:iOS 和Android 318
13.3.1 設(shè)置構(gòu)建工具. 319
13.3.2 貼圖壓縮 323
13.3.3 開發(fā)插件 324
13.4 XR(擴(kuò)展現(xiàn)實)開發(fā). 332
13.4.1 支持虛擬現(xiàn)實頭戴式設(shè)備 333
13.4.2 面向移動端增強現(xiàn)實的AR Foundation 334
13.5 小結(jié) 339
后記 341
附錄A 場景導(dǎo)航和快捷鍵 343
A.1 使用鼠標(biāo)進(jìn)行場景導(dǎo)航. 343
A.2 常用的快捷鍵 344
附錄B 與Unity 一同使用的外部工具. 345
B.1 編程工具. 345
B.1.1 Rider 345
B.1.2 Xcode 345
B.1.3 Android SDK 346
B.1.4 版本控制(Git、SVN) .346
B.2 3D 美術(shù)應(yīng)用程序346
B.2.1 Maya346
B.2.2 3ds Max346
B.2.3 Blender .347
B.2.4 SketchUp.347
B.3 2D 圖像編輯器.347
B.3.1 Photoshop347
B.3.2 GIMP.347
B.3.3 TexturePacker 347
B.3.4 Aseprite 和Pyxel Edit .347
B.4 音頻軟件.348
B.4.1 Pro Tools .348
B.4.2 Audacity 348
附錄C 在Blender 中創(chuàng)建長凳模型.349
C.1 構(gòu)建網(wǎng)格幾何體350
C.2 模型的貼圖映射353
附錄D 在線學(xué)習(xí)資源357
D.1 其他指南.357
D.2 代碼庫358