unity面试——.net相关知识点

71 阅读2分钟

1.net介绍

它是微软公司下的系列产品,包括了编程语言:c#,vb等,框架平台:netcore,netframwork等,还有ide:visual studio,vscode。

2.net实现跨语言和跨平台的原理

跨语言:net平台通过制定的CLS语言基础规范,将所有支持这个语言规范的编程语言编译为中间语言CIL 语言,之后通过.netFramwork/core的核心组件CLR公共语言运行时(类似.net模拟机)统一编译为机器码,在操作系统上运行。

跨平台:.netFramwork不支持跨平台。core支持。core是framwork的翻版实现,通过在不同的操作系统里面实现对应的CLR公共语言运行时,这样就可以把IL中间代码翻译为对应的机器码在不同的操作系统上运行。

3.Unity如何利用Mono实现跨平台的?

unity包括2个部分:引擎:图形api,物理引擎,灯光等由c/c++编写。编辑器:c#,JavaScript等,由mono编译。 mono主要构成部分:1c#编译器(mcs),2 Mono Runtime类似CLR公共语言运行时 3一些类库 原理:unity编辑器里使用各种语言进行开发,在发布时会被编译为IL中间语言。在不同的操作系统会通过MONO VM虚拟机翻译为操作系统的机器码,最后执行程序。JIT即时编译(边编译边运行)。

优点:只需要在操作系统上实现mono vm虚拟机就可以支持无限多平台 缺点:维护成本非常大,unity版本更新,对不同的操作系统都要更新mono虚拟机。

4.Unity如何利用IL2cpp实现跨平台

会将IL中间代码转译为c++代码,再通过各平台的c++编译器编译为原生汇编代码,最后在各个操作系统上 通过IL2CPP虚拟机运行这些汇编代码。是AOT提前编译。 优点:效率比mono更高,跨平台更好维护。更加推荐使用IL2CPP