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