Unity中.Net與Mono的關系

什么是.NET

.NET是一個開發框架,它遵循并采用CIL(Common Intermediate Language)和CLR(Common Language Runtime)兩種約定,

CIL標準為一種編譯標準:將不同編程語言(C#, JS, VB等)使用各自的編譯器,按照統一的標準編譯成語義一致的CIL中間碼, 這樣雖然代碼使用的語言不同,但編譯出的產物是一樣的。

CLR標準為一種執行標準:不同的操作系統可以根據CLR這一執行標準開發出自己平臺的中間碼執行器,這樣CIL這個標準中間產物就可以在不同的平臺執行了。其中Mono框架就扮演了這樣一個重要的角色,實現了各個平臺的CLR執行器。

在這里插入圖片描述
.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

Mono是一個框架,它是.NET這個開源框架的子集,它建立在.NET框架基礎上,在使用.NET基礎能力的基礎上,自己做了多各個操作系統的CLR實現來實現跨平臺。同時也重寫了一些.NET框架中的基本功能。

在這里插入圖片描述
mcs編譯器: C#編譯器,C#編譯為IL中間指令。
Unity跨平臺的原理: 就是Mono運行時編譯器支持將IL代碼轉為對應平臺原生碼,IL可以在任何支持CLI(Common Language Insfrastructure,通用語言環境結構)中運行,IL的運行是依托Mono運行時。
IOS不支持jit編譯原因:機器碼被禁止映射到內存,即封存了內存的可執行權限,變相的封鎖了jit編譯方式,詳情參考:https://www.cnblogs.com/murongxiaopifu/p/4278947.html
JIT編譯: 將IL代碼轉為對應平臺原生碼并且將原生碼映射到虛擬內存中執行。JIT編譯的時候IL是在依托Mono運行時,轉為對應的原生碼后在依托本地運行。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697503.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697503.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697503.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaScript 原始值和引用值在變量復制時的異同

相比于其他語言,JavaScript 中的變量可謂獨樹一幟。正如 ECMA-262 所規定的,JavaScript 變量是松散類型的,而且變量不過就是特定時間點一個特定值的名稱而已。由于沒有規則定義變量必須包含什么數據類型,變量的值和數據類型在腳本…

mysql.service is not a native service, redirecting to systemd-sysv-install

字面意思:mysql.service不是本機服務,正在重定向到systemd sysv安裝 在CentOS上使用Systemd管理MySQL服務的具體步驟如下: 1、創建MySQL服務單元文件: 首先,你需要創建一個Systemd服務單元文件,以便Syste…

【Python筆記-設計模式】原型模式

一、說明 原型模式是一種創建型設計模式, 用于創建重復的對象,同時又能保證性能。 使一個原型實例指定了要創建的對象的種類,并且通過拷貝這個原型來創建新的對象。 (一) 解決問題 主要解決了對象的創建與復制過程中的性能問題。主要針對…

redhawk:使用ipf文件反標instance power

我正在「拾陸樓」和朋友們討論有趣的話題,你?起來吧? 拾陸樓知識星球入口 往期文章鏈接: Redhawk:Input Data Preparation 使用ptpx和redhawk報告功耗時差別總是很大,如果需要反標top/block的功耗值可以在gsr文件中使用BLOCK_POWER_FOR_SCALING的命令

Verilog刷題筆記35

題目: Create a 1-bit wide, 256-to-1 multiplexer. The 256 inputs are all packed into a single 256-bit input vector. sel0 should select in[0], sel1 selects bits in[1], sel2 selects bits in[2], etc. 解法: module top_module( input [255:…

Spring Cloud Alibaba-05-Gateway網關-02-斷言(Predicate)使用

Lison <dreamlison163.com>, v1.0.0, 2023.10.20 Spring Cloud Alibaba-05-Gateway網關-02-斷言(Predicate)使用 文章目錄 Spring Cloud Alibaba-05-Gateway網關-02-斷言(Predicate)使用通過時間匹配通過 Cookie 匹配通過 Header 匹配通過 Host 匹配通過請求方式匹配通…

C# CAD2016 cass10宗地Xdata數據寫入

一、 查看cass10寫入信息 C# Cad2016二次開發獲取XData信息&#xff08;二&#xff09; 一共有81條數據 XData value: QHDM XData value: 121321 XData value: SOUTH XData value: 300000 XData value: 141121JC10720 XData value: 權利人 XData value: 0702 XData value: YB…

2.居中方式總結

居中方式總結 經典真題 怎么讓一個 div 水平垂直居中 盒子居中 首先題目問到了如何進行居中&#xff0c;那么居中肯定分 2 個方向&#xff0c;一個是水平方向&#xff0c;一個是垂直方向。 水平方向居中 水平方向居中很簡單&#xff0c;有 2 種常見的方式&#xff1a; 設…

java面試題之mybatis篇

什么是ORM&#xff1f; ORM&#xff08;Object/Relational Mapping&#xff09;即對象關系映射&#xff0c;是一種數據持久化技術。它在對象模型和關系型數據庫直接建立起對應關系&#xff0c;并且提供一種機制&#xff0c;通過JavaBean對象去操作數據庫表的數據。 MyBatis通過…

MATLAB練習題:randperm函數的練習題

?講解視頻&#xff1a;可以在bilibili搜索《MATLAB教程新手入門篇——數學建模清風主講》。? MATLAB教程新手入門篇&#xff08;數學建模清風主講&#xff0c;適合零基礎同學觀看&#xff09;_嗶哩嗶哩_bilibili MATLAB中有一個非常有用的函數&#xff1a;randperm函數&…

華為算法題 go語言或者ptython

1 給定一個整數數組 nums 和一個整數目標值 target&#xff0c;請你在該數組中找出 和為目標值 target 的那 兩個 整數&#xff0c;并返回它們的數組下標。 你可以假設每種輸入只會對應一個答案。但是&#xff0c;數組中同一個元素在答案里不能重復出現。 你可以按任意順序返…

如何進行高性能架構的設計

一、前端優化 減少請求次數頁面靜態化邊緣計算 增加緩存控制&#xff1a;請求頭 減少圖像請求次數&#xff1a;多張圖片變成 一張。 減少腳本的請求次數&#xff1a;css和js壓縮&#xff0c;將多個文件壓縮成一個文件。 二、頁面靜態化 三、邊緣計算 后端優化 從三個方面進…

adb-monkey命令

目錄 adb shell monkey -p/-v 包名 次數 1、指定一個包 2、指定多個包 3、不指定包 Event percentages&#xff08;事件百分比&#xff09; 常見參數 --throttle 延遲時間 單位毫秒 --pct-touch 設定觸屏事件生成的百分比 --pct-motion 設定滑動事件生成…

面試前端性能優化八股文十問十答第二期

面試前端性能優化八股文十問十答第二期 作者&#xff1a;程序員小白條&#xff0c;個人博客 相信看了本文后&#xff0c;對你的面試是有一定幫助的&#xff01;關注專欄后就能收到持續更新&#xff01; ?點贊?收藏?不迷路&#xff01;? 1&#xff09;如何優化動畫&#x…

c語言中的大小寫字母轉換怎么轉?

在C語言中&#xff0c;大小寫字母轉換是基于ASCII碼表的特性實現的。ASCII碼中&#xff0c;小寫字母從’a’到’z’的ASCII碼值是連續的&#xff08;97到122&#xff09;&#xff0c;而大寫字母從’A’到’Z’的ASCII碼值也是連續的&#xff08;65到90&#xff09;。它們之間有…

Redis高性能原理

redis大家都知道擁有很高的性能&#xff0c;每秒可以支持上萬個請求&#xff0c;這里探討下它高性能的原理。單線程架構和io多路復用技術。 一&#xff0c;單線程架構 單線程架構指的是命令執行核心線程是單線程的&#xff0c;數據持久化、同步、異步刪除是其他線程在跑的。re…

獲取視頻第一幀,以及后續上傳

// 獲取視頻基本信息 const getVideoBasicInfo (videoSrc) > {return new Promise((resolve, reject) > {const video document.createElement("video");video.src videoSrc;// 視頻一定要添加預加載video.preload "auto";// 視頻一定要同源或者…

什么是系統工程(字幕)35

0 00:00:01,190 --> 00:00:02,840 下面的內容 1 00:00:04,850 --> 00:00:06,520 接下來呢就是 2 00:00:08,180 --> 00:00:09,830 16.6.1 3 00:00:11,070 --> 00:00:13,440 項流熱平衡分析 4 00:00:15,350 --> 00:00:16,730 這一節 5 00:00:18,860 --> 0…

億道丨三防平板丨加固平板丨三防加固平板丨改善資產管理

庫存資產管理中最重要的部分之一是準確性&#xff1b;過時的庫存管理技術會增加運輸過程中人為錯誤、物品丟失或紙張損壞的風險。如今隨著三防平板電腦的廣泛使用&#xff0c;庫存管理也迎來了好幫手&#xff0c;通過使用三防平板電腦能夠確保庫存管理、數據存儲和記錄保存的準…

React18源碼: React調度中的3種優先級類型和Lane的位運算

優先級類型 React內部對于優先級的管理&#xff0c;貫穿運作流程的4個階段&#xff08;從輸入到輸出&#xff09;&#xff0c;根據其功能的不同&#xff0c;可以分為3種類型&#xff1a; 1 &#xff09;fiber優先級(LanePriority) 位于 react-reconciler包&#xff0c;也就是L…