1、.NET是什么
.NET是微軟搭建的開發者平台,主要包括:
-
1.支持(面向)該平台的編程語言(如C#、Visual Basic、C++/CLI、F#、IronPython、IronRuby...),
-
2.用於該平台下開發人員的技術框架體系(.NET Framework、.NET Core、Mono、UWP等),
- 1.定義了通用類型系統,龐大的CTS體系
- 2.用於支撐.NET下的語言運行時的環境:CLR
- 3..NET體系技術的框架庫FCL
-
3.用於支持開發人員開發的軟件工具(即SDK,如VS2017、VS Code等)
這篇博文寫的無比清晰。https://www.cnblogs.com/1996V/p/9037603.html#net23
2、Mono是什么
微軟的.NET框架本身只能在windows上運行,對於跨平台的需求,Mono就產生了。
Mono是.NET的一個開源跨平台工具,可以實現跨平台運行。
Mono作為.NET框架在不同平台上的重要補充,Mono也被Unity所引用。
3、Unity是如何實現跨平台的
因為Unity使用了叫CIL(通用中間語言)的代碼指令集。CIL可以在任何支持CLI(通用語言基礎結構)的環境中運行。
Unity代碼的編譯分為兩部分:
- 從代碼到CIL的編譯
- 運行時從CIL到本地指令的即時編譯(不包括IOS,因為IOS無法使用JIT引擎)
Unity打包時會將mono一同打包進來,同時Unity將腳本編譯為CIL代碼打包,這樣只要是Mono支持的平台,都可以在Mono中編譯成平台本地代碼。
參考於Unity3D腳本編程一書。