日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

unity底层运行机制_Unity跨平台的机制原理

發(fā)布時間:2024/9/27 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 unity底层运行机制_Unity跨平台的机制原理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先需要了解的是,Unity3D的C#基礎(chǔ)腳本模塊是通過Mono來實(shí)現(xiàn)的。

什么是Mono?

參考下百度百科:Mono是一個由Novell公司(由Xamarin發(fā)起)主持的項(xiàng)目,并由Miguel de lcaza領(lǐng)導(dǎo)的,一個致力于開創(chuàng).NET在Linux上使用的開源工程。它包含了一個C#語言的編譯器,一個CLR的Runtime,和一組類庫,并實(shí)現(xiàn)了 ADO NET和ASP NET。

它基于CIL和C#的ECMA標(biāo)準(zhǔn),提供了了微軟.Net FrameWork的另一種實(shí)現(xiàn)。

Mono主要有以下部分組成:

C#編譯器——mcs。(最新的Mono版本已經(jīng)可以支持C#5.0,但Unity3D的Mono版本仍然停留在2.0+階段(支持c#3.0),所以C#的一些新功能無法在unity中使用)

運(yùn)行時:即時編譯器JIT(后文會介紹)。以及GC,類庫加載器等等。

基礎(chǔ)類庫(BCL)。

Mono類庫。提供了超出微軟.NET的一些類,提供了許多額外功能,主要是用于構(gòu)建其他操作系統(tǒng)上的應(yīng)用。

下面進(jìn)入正題:

Mono和Unity

Unity引擎本身是由C++寫出的,只不過Mono被嵌入到了Unity當(dāng)中,為unity提供了一個完整的虛擬機(jī)運(yùn)行環(huán)境。這樣Mono的嵌入接口會將Mono Runtime暴露給Unity底層的C++代碼。通過這些接口,開發(fā)者就可以控制Mono Runtime,以及依托于Mono Runtime的托管代碼。

Unity為何能夠跨平臺?

一句話概括,主要原因在于Unity通過Mono使用了一種叫CIL(Common Intermediate Language,也叫MSIL)通用中間語言的基于堆棧的代碼指令集,它屬于CLR的一個子集。

Unity3D的開發(fā)過程中,代碼的編譯主要分為兩個過程:

1)首先將對應(yīng)的腳本代碼編譯成CIL(之后CIL還會被編譯成一種位元碼,生成一個CLI集合)。

2)然后Mono在運(yùn)行時將CLI集合中的位元碼編譯為本地運(yùn)行的原生指令。(這里會使用到上文中的JIT、AOT編譯模式)

注:也就是說在Mono中運(yùn)行的其實(shí)是CIL,而在本地運(yùn)行的是被編譯后生成的原生指令。

更多unity2018的功能介紹請到paws3d學(xué)習(xí)中心查找。

總結(jié)

以上是生活随笔為你收集整理的unity底层运行机制_Unity跨平台的机制原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。