一.分析
首先,我們要知道Unity,Mono,.Net 三者的關係。需要簡單說一下.Net。
.Net擁有跨語言,跨平臺性。
跨語言:就是隻要是面向.Net平臺的編程語言,用其中一種語言編寫的類型就可以無縫的在另外一種語言編寫的應用程序中互操作。
跨平臺:一次編譯,不需要任何代碼修改,應用程序就可以運行在任意在.Net實現的平臺上跑,即代碼不依賴於操作系統,也不依賴硬件環境。一個.Net程序運行的核心在於.Net
CLR(公共語言運行時,或者稱爲.Net 虛擬機,類似java虛擬機的概念),爲了讓.Net程序在其他平臺(目前只能在.Net 平臺,windows系統)上跑,微軟官方還推出了在其他平臺上(MacOs,Linux)跑的
.Net的實現,就推出了.Net Core。
然而,Unity引擎需求也是需要跨平臺,支持多語言(C#,Js,Boo)。就參考微軟開發.Net Core的概念,於是,推出了Mono.
畫個圖簡單對比一下:
到這裏,基本說明了.Net 與Mono和Unity的聯繫關係,其實沒啥關係。做遊戲都知道,肯定需要跨平臺,不能只支持一種平臺,不然每個對應的平臺做出一種對應的編譯器,那真的會累死。所以對於跨平臺的需求,對於遊戲開發而言,很重要。Unity的架構需求設計當然也需要這個特性。參考.Net依託CLR來實現設計思路,於是Mono就出來了。
二.Mono
1)Mono運行時
參考:https://blog.csdn.net/LMLBY/article/details/53539316?locationNum=15&fps=1