Unity3D幾乎是市面上最流行的游戲開(kāi)發(fā)引擎,由Unity Technology(以下簡(jiǎn)稱(chēng)UT)公司開(kāi)發(fā),可用于Windows和Mac OS X系統(tǒng)(Linux系統(tǒng)實(shí)驗(yàn)版已發(fā)布)。最重要的是,它幾乎可以導(dǎo)出到任何平臺(tái)。那么Unity3D游戲開(kāi)發(fā)引擎跨平臺(tái)怎么實(shí)現(xiàn)的呢?
1.關(guān)于圖形
Unity 支持的圖形 API 有 OpenGL、OpenGL ES、WebGL、Metal 和 DirectX,它們分別對(duì)應(yīng)不同的平臺(tái)。
OpenGL被廣泛使用,一些iOS設(shè)備、Mac OS X和Linux,甚至Windows都使用OpenGL。
OpenGL ES 兼容手機(jī)設(shè)置,支持大部分 Android 和部分 iOS 設(shè)備。
WebGL 是一個(gè)基于瀏覽器圖形運(yùn)行應(yīng)用程序和游戲的新平臺(tái),無(wú)需安裝 Flash 或 Unity WebPlayer 等插件。
Metal 是 Apple 的新圖形 API,與最新的 iOS 設(shè)備和加州計(jì)算機(jī)兼容。
DirectX 是微軟自制的圖形 API 解決方案,兼容 Windows、Windows Phone 和 Xbox。
雖然 UT 開(kāi)發(fā)人員在圖形處理上也花費(fèi)了大量時(shí)間,但他們大部分時(shí)間都花在將這些工具集成到引擎中,而不是自己編寫(xiě)圖形 API。
2.關(guān)于物理學(xué)
在物理方面,它比圖形簡(jiǎn)單得多,Unity 始終堅(jiān)持使用一種工具:Nvidia 的 PhysX,它支持 Unity 導(dǎo)出到的所有平臺(tái)??梢赃@么說(shuō),它是市場(chǎng)上最好的物理引擎之一,自從它的第一代產(chǎn)品 Novodex 甚至不是 Nvidia 的產(chǎn)品以來(lái),它就一直受到信任并且表現(xiàn)非常出色。主要原因是一個(gè)引擎方便處理所有平臺(tái)的物理,并且游戲在支持的設(shè)備中的碰撞和移動(dòng)行為是一致的,不會(huì)因?yàn)樵O(shè)備而導(dǎo)致游戲不平衡。
3.關(guān)于照明
Unity 的光照也依賴(lài)于外部工具,包括烘焙和實(shí)時(shí)光照。 Unity5 之前使用 Autodesk 的 Beast 作為烘焙光照的工具。 Unity5.x 使用 Geomeric 的 Enlighten 進(jìn)行烘焙和實(shí)時(shí)光照。
4.關(guān)于網(wǎng)絡(luò)
UT于2014年發(fā)布了其自制的聯(lián)網(wǎng)多人解決方案UNET。之前有一些常用的網(wǎng)絡(luò)解決方案,最著名的是Photon。而UNET由兩部分組成:網(wǎng)絡(luò)API(高級(jí)和低級(jí)API)和付費(fèi)多人服務(wù)。由于這是一個(gè)內(nèi)部項(xiàng)目,UT 必須將代碼移植到所有支持的平臺(tái)上,就像上面的圖形、物理和照明一樣,每個(gè)平臺(tái)都是不同的。
5.關(guān)于腳本
腳本可能是每個(gè)人最關(guān)心的部分,因?yàn)槭褂靡娴哪康氖遣槐負(fù)?dān)心圖形或底層物理。 Unity 支持 C# 和 Unity 腳本,無(wú)需任何轉(zhuǎn)換工具即可將游戲?qū)С龅缴鲜鋈魏纹脚_(tái)。
查看 Xamarin 說(shuō)明:
用 C# 編寫(xiě)應(yīng)用程序并直接從 C# 調(diào)用任何本機(jī)平臺(tái)的 API。 Xamarin 編譯器捆綁 .NET 運(yùn)行時(shí)并輸出本機(jī) ARM 可執(zhí)行文件,打包為 iOS 或 Android 應(yīng)用程序。
那么Mono開(kāi)發(fā)的應(yīng)用是綁定到整個(gè)框架的嗎?當(dāng)然不是,框架中沒(méi)有用到的類(lèi)在鏈接時(shí)就被淘汰掉了。只有使用過(guò)的部件才會(huì)被打包到最終的應(yīng)用程序中。至此,Unity的跨平臺(tái)原理基本講完了,Mono是主要貢獻(xiàn)者。順便說(shuō)一句,Unity 最初推出 IL2CPP 是為了取代 Mono 作為腳本后端,但由于它的 bug 太多以及導(dǎo)出的 C++ 文件很大,一直受到開(kāi)發(fā)人員的批評(píng)。相信IL2CPP短時(shí)間內(nèi)要完全取代Mono并不容易。
希望以上內(nèi)容對(duì)您學(xué)習(xí)Unity3D開(kāi)發(fā)有所幫助!千鋒教育擁有完整的移動(dòng)Unity3D開(kāi)發(fā)課程體系,歡迎大家來(lái)免費(fèi)試聽(tīng)。更多關(guān)于unity培訓(xùn)的問(wèn)題,歡迎咨詢(xún)千鋒教育在線名師,如果想要了解我們的師資、課程、項(xiàng)目實(shí)操的話可以點(diǎn)擊咨詢(xún)課程顧問(wèn),獲取試聽(tīng)資格來(lái)試聽(tīng)我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門(mén)到精通。