- Unity游戲案例開發大全
- 吳亞峰 杜化美 于復興編著
- 2449字
- 2019-01-02 05:50:05
第1章 Unity 3D基礎以及開發環境的搭建
本章主要向讀者介紹Unity 3D的基礎知識以及Unity集成開發環境的安裝,讀者會對Unity 3D有一個大致的了解。通過本書案例的導入及運行,讀者可以方便地將光盤中的各個項目案例導入到自己電腦上的Unity進行效果預覽和其他操作。
1.1 Unity 3D基礎知識概覽
本節主要向讀者介紹Unity 3D的發展歷史以及其獨具特色的特點,主要內容包括Unity 3D的簡介、Unity 3D廣闊的市場前景、Unity 3D的發展和Unity 3D的特點等。通過本節的學習,讀者將對Unity 3D有一個基本的認識。
1.1.1 初識Unity 3D
Unity 3D是由Unity Technologies開發的一個輕松創建三維視頻游戲、建筑可視化、實時三維動畫等互動內容的、多平臺的綜合型游戲開發工具,是一個全面整合的專業游戲引擎。通過Unity簡單的用戶界面,玩家可以完成任何工作。
Unity類似于Director、Blender Game Engine、Virtools和Torque Game Builder等以交互的圖形化開發環境為首要方式的3D游戲引擎軟件。內置的NVIDIAPhysX物理引擎帶給玩家生活的互動。實時三維圖形混合音頻流、視頻流。
其編輯器運行在Windows和Mac OS X下,可發布游戲至Windows、Mac、Wii、iPhone和Android平臺,也可以利用Unity Web Player插件發布網頁游戲,支持Mac和Windows的網頁瀏覽,并且Unity的網頁播放器也被Mac Widgets所支持。
1.1.2 Unity的誕生及發展
通過前面小節的學習,相信讀者對Unity有了一個簡單的認識。Unity現在已經是移動游戲領域較為優秀的游戲引擎,能從誕生到現在不到10年的時間取得如此成績,Unity可謂生逢其時。而本節為了讓讀者對Unity有更進一步的了解,將為讀者介紹Unity的發展史。
2005年6月,Unity 1.0發布。Unity 1.0是一個輕量級、可擴展的依賴注入容器,有助于構建松散耦合的系統。它支持構造注入(Constructor Injection)、屬性/設定方法注入(Property/Setter Injection)和方法調用注入(Method Call Injection)。
2009年3月,Unity 2.5加入了對Windows的支持。Unity發展到2.5完全支持Windows Vista與Windows XP的全部功能和互操作性,而且Mac OS X中的Unity編輯器也已經重建,在外觀和功能上都相互統一。Unity 2.5的優點就是Unity 3D可以在任一平臺建立任何游戲,實現了真正的跨平臺。
2009年10月,Unity 2.6獨立版本開始免費。Unity 2.6支持了許多外部版本控制系統,例如Subversion、Perforce、Bazaar,或是其他的VCS系統等。除此之外,Unity 2.6與Visual Studio完整的一體化也增加了Unity自動同步Visual Studio項目的源代碼,實現所有腳本的解決方案和智能配置。
2010年9月,Unity 3.0版本支持多平臺。新增加的功能有:方便編輯桌面左側的快速啟動欄、增加支持Ubuntu 12.04、更改桌面主題和在dash中隱藏“可下載的軟件”類別等。
2012年2月,Unity Technologies發布Unity 3.5版本。縱觀其發展歷程,Unity Technologies公司一直在快速強化Unity,Unity 3.5版本提供了大量的新增功能和改進功能。所有使用Unity 3.0或更高版本的用戶均可免費升級到Unity 3.5。
2012年11月,Unity Technologies公司正式推出Unity 4.0版本,新加入對DirectX 11的支持和全新的Mecanim動畫工具,支持移動平臺的動態陰影,減少移動平臺Mesh內存消耗,支持動態字體渲染,以及為用戶提供Linux及Adobe Flash Player的部署預覽功能。
2013年11月,Unity 4.3版本發布。同時Unity正式發布2D工具,標志著Unity不再是單一的3D工具,而是真正地能夠同時支持二維和三維內容的開發和發布。發布2D工具的預告已經讓Unity開發者興奮不已,這也正是開發者長久以來所期待的。
1.1.3 Unity 3D廣闊的市場前景
近幾年來,Android平臺游戲、iPhone平臺游戲以及Web網頁游戲發展迅猛,已然成為帶動游戲發展的新生力量。遺憾的是目前除了少數的作品成功外,大部分的游戲都屬宣傳攻勢大于內容品質的平庸之作。
面對這種局面,3D游戲成為獨辟蹊徑的一種選擇,而為3D游戲研發提供強大技術支持的Unity 3D引擎,對DirectX和OpenGL擁有高度優化的圖形渲染管道,以其創造高質量的3D游戲和真實視覺效果的核心技術,為開發3D游戲提供了強大的源動力。
提示
Unity 3D游戲引擎后來居上,在2012年發行的幾款風靡一時的iPhone和Android平臺上的游戲都選擇了這款游戲引擎,如《神廟逃亡2》、《王者之劍》、《武士2:復仇》等。
Unity 3D不僅在游戲領域里有廣闊的應用,其還可以用于3D虛擬仿真、大型產品3D展示、3D虛擬展會、3D場景導航以及一些精密儀器使用方法的演示等,可謂領域非常廣泛。
Unity 3D游戲引擎技術研討會最早于2011年5月在韓國舉行。據悉,現在10種以上的新引擎開發都采用了Unity 3D游戲引擎技術。現已有部分開發商利用China Joy展會的契機,展示了該引擎的運行效果,目前已有不少廠商與開發商簽訂了提前預定引擎的協議。
提示
Unity引擎可以幫助開發人員制作出炫麗的3D效果,并實時生成查看,目前已推出了對應iPhone、iPad、PC、Mac、Android、Flash Player、Wii、PS3、Xbox360等平臺的版本,促進了游戲跨平臺的應用。讀者要做的,只是在編輯器中選擇使用哪一個平臺來預覽游戲作品。
未來幾年必定是Unity 3D“大行其道”的時代,其開發群體的迅速擴大、Web Player裝機率的快速上升使Unity 3D迅速爆發的時機已經到來。在此引用業內知名人士的一句話:“不要再對所謂的Flash 3D抱有什么希望,也不要再去花心思學習那些雜七雜八的Flash 3D插件,趕緊學習Unity 3D才是正經。”
1.1.4 獨具特色的Unity 3D
通過前面兩個小節的學習,相信讀者對Unity 3D有了一個基本的認識。Unity在游戲開發領域用其獨特、強大的技術理念征服了全球眾多的業界公司以及游戲開發者。本小節將為讀者介紹Unity 3D的特點,幫助讀者進一步學習Unity 3D。
1.Unity 3D本身所具有的特點
綜合編輯
Unity簡單的用戶界面是層級式的綜合開發環境,具備視覺化編輯、詳細的屬性編輯器和動態的游戲預覽特性。由于其強大的綜合編輯特性,因此,Unity也被用來快速地制作游戲或者開發游戲原型,如圖1-1所示。

▲圖1-1 綜合編輯
圖形引擎
Unity的圖形引擎使用的是Direct 3D(Windows)、OpenGL(Mac,Windows)和自有的APIs(Wii),可以支持Bump mapping、Reflection mapping、Parallax mapping、Screen Space Ambient Occlusion、動態陰影所使用的Shadow Map技術與Render-to-texutre和全屏Post Processing效果。
資源導入
項目中的資源會被自動導入,并根據資源的改動自動更新。雖然很多主流的三維建模軟件為Unity所支持,不過對3ds Max、Maya、Blender、Cinema 4D和Cheetah3D的支持比較好,并支持一些其他的三維格式。
一鍵部署
Unity可開發微軟Microsoft Windows和Mac OS X的可執行文件,在線內容通過Unity Web Player插件支持Internet Explorer、Mozilla、Netscape、Opera和Camino、Mac OS X的Dashboard工具,但是Wii程序和iPhone應用程序的開發需要用戶購買額外的授權,在價格上有所不同,如圖1-2所示。

▲圖1-2 一鍵部署
著色器(Shader)
Shader編寫使用ShaderLab語言,同時支持自有工作流中的編程方式或Cg.GLSL語言編寫的Shader。Shader對游戲畫面的控制力就好比在Photoshop中編輯數碼照片,在高手手里可以營造出各種驚人的畫面效果。圖1-3所示為Unity經典游戲《憤怒的機器人》場景中的Shader應用效果。

▲圖1-3 游戲《憤怒的機器人》場景中的Shader應用效果
一個Shader可以包含眾多變量及一個參數接口,允許Unity去判定參數是否為當前所支持并適配最適合參數,并選擇相應的Shader類型以獲得廣大的兼容性。因此,Unity的著色器系統具有易用、靈活和高性能的特性。
地形編輯器
Unity內建強大的地形編輯器,支持地形創建和樹木與植被貼片,還支持自動的地形LOD,而且還支持水面特效,尤其是低端硬件亦可流暢運行廣闊茂盛的植被景觀,還有Tree Create來編輯樹木的各部位細節,如圖1-4和圖1-5所示。

▲圖1-4 地形1

▲圖1-5 地形2
聯網
現在大部分游戲都是聯網的,令人驚喜的是,Unity內置了強大多人聯網游戲引擎,具有Unity自帶的客戶端和服務器端,省去了并發、多任務等一系列繁瑣而困難的操作,可以簡單地完成所需的任務。其多人網絡連線采用Raknet,可以從單人游戲到全實時多人游戲。
物理特效
物理引擎是一個計算機程序模擬牛頓力學模型,使用質量、速度、摩擦力和空氣阻力等變量。其可以用來預測各種不同情況下的效果。Unity內置NVIDIA強大的PhysX物理引擎,可以方便、準確地開發出所需要的物理特效。
PhysX可以由CPU計算,但其程序本身在設計上還可以調用獨立的浮點處理器(如GPU和PPU)來計算,也正因為如此,它可以輕松完成像流體力學模擬那樣的大計算量的物理模擬計算。并且PhysX物理引擎還可以在包括Windows、Linux、Xbox360、Mac、Android等在內的全平臺上運行。
音頻和視頻
音效系統基于OpenAL程式庫,可以播放Ogg Vorbis的壓縮音效,視頻播放采用Theora編碼,并支持實時三維圖形混合音頻流和視頻流。
OpenAL的主要功能是在來源物體、音效緩沖和收聽者中編碼。來源物體包含一個指向緩沖區的指標,聲音的速度、位置和方向,以及聲音強度。收聽者物體包含收聽者的速度、位置和方向,以及全部聲音的整體增益。緩沖里包含8位或16位元、單聲道或立體聲PCM格式的音效資料,表現引擎進行所有必要的計算,如距離衰減、多普勒效應等。
腳本
游戲腳本為基于Mono的Mono腳本,是一個基于.NET Framework的開源語言,因此,程序員可用JavaScript 、C#或Boo加以編寫,如圖1-6所示。

▲圖1-6 腳本
提示
由于JavaScript和C#腳本語言是目前Unity開發中比較流行的語言,同時,考慮到腳本語言的通用性,因此,本書采用JavaScript和C#兩種腳本語言編寫腳本,給讀者帶來更多的選擇。
Unity資源服務器
Unity資源服務器具有一個支持各種游戲和腳本版本的控制方案,使用PostgreSql作為后端。其可以保證在開發過程中多人并行開發,保證不同的開發人員使用不同版本的開發工具所編寫的腳本能夠順利地集成。
真實的光影效果
Unity提供了具有柔和陰影與lightmaps的高度完善的光影渲染系統。光照圖(lightmap)是包含了視頻游戲中面的光照信息的一種三維引擎的光強數據。光照圖是預先計算好的,而且要用在靜態目標上。
說明
靜態目標(static objects)在三維引擎里是區別于動態目標(dynamic object)的一種分類。
2.Unity 3D的跨平臺特性
Unity類似于Director、Blender Game Engine、Virtools或Torque Game Builder等以交互的圖形化開發環境為首要方式的軟件。其編輯器運行在Windows和Mac OS X下,可發布游戲至Windows、Mac、Wii、iPhone和Android平臺,也可以利用Unity Web Player插件發布網頁游戲,支持Mac和Windows的網頁瀏覽。
現在市面上已經推出了很多由Unity開發的基于Android平臺、iPhone平臺以及大型的3D網頁游戲,這些游戲都得到了很高評價。接下來將分別為讀者介紹這三類游戲。
基于Android平臺的游戲
Unity可以基于Android平臺進行游戲開發,由于其自身存在優勢,因此開發的游戲也讓人賞心悅目,贊不絕口。
例如,《搗蛋豬》是Rovio Entertainment繼《憤怒的小鳥》之后的又一款力作,如圖1-7所示;由天美藝游工作室開發的《天天飛車》,如圖1-8所示;由GluMobile開發的《血之榮耀》,如圖1-9所示;是由藍港在線開發的《王者之劍》,如圖1-10所示。

▲圖1-7 《搗蛋豬》

▲圖1-8 《天天飛車》

▲圖1-9 《血之榮耀》

▲圖1-10 《王者之劍》
基于iPhone平臺的游戲
Unity依然可以基于iPhone平臺進行游戲開發,由于其自身存在的優勢,可以制作出絢麗多彩的iPhone平臺游戲。
例如,由Imangi Studios開發的跑酷類視頻游戲《神廟逃亡2》,如圖1-11所示;是由Defiant Development Pty.Ltd開發的《滑雪大冒險》,如圖1-12所示;是由YANSHU SUN開發的《崩壞學園》,如圖1-13所示;是由Crescent Moon Games LLC開發的Slingshot Racing,如圖1-14所示。

▲圖1-11 《神廟逃亡2》

▲圖1-12 《滑雪大冒險》
基于Web的大型3D網頁游戲
同樣Unity也可以開發基于Web的大型3D網頁游戲,網頁類游戲不用下載客戶端,也是近幾年比較流行的一種游戲類型,市面上已經推出了很多這樣的3D網頁游戲。

▲圖1-13 《崩壞學園》

▲圖1-14 Slingshot Racing
例如,《新仙劍奇俠傳online》是駿夢游戲的最新力作,如圖1-15所示;是由上海友齊開發的《坦克英雄》,如圖1-16所示;《絕代雙驕》是開發商昆侖在線開發的一款全新網頁游戲,如圖1-17所示;《蒸汽之城》是由廈門夢加網絡科技有限公司開發的一款3D網頁MMORPG,如圖1-18所示。

▲圖1-15 《新仙劍奇俠傳online》

▲圖1-16 《坦克英雄》

▲圖1-17 《絕代雙驕》

▲圖1-18 《蒸汽之城》
- 軟件工程基礎教程
- 實戰Java虛擬機:JVM故障診斷與性能優化(第2版)
- 深入淺出數據結構與算法(微課視頻版)
- 全棧Monorepo開發實戰(Vue 3+Fastify+Deno+pnpm)
- 火災與逃生模擬仿真:PyroSim+Pathfinder中文教程與工程應用
- 軟件工程:理論與實踐(第2版)
- 微信小程序實戰入門(內含完整實例解析)
- 鋒利的jQuery(第2版)
- HTML5游戲編程核心技術與實戰
- 云原生測試實戰
- Spring 3.0就這么簡單
- Intel Quartus Prime數字系統設計權威指南:從數字邏輯、Verilog HDL 到復雜數字系統的實現
- 現代軟件測試技術之美
- 架構師啟示錄:知識模型、落地方法與思維模式
- 低代碼開發平臺的設計與實現:基于元數據模型