uno*_*lee 7 .net c# mono unity-game-engine
这些天我一直在使用Unity3D并检查了有关.NET系统的手册.但感到很困惑.
在Unity3D播放器设置中,有两个选项称为"脚本运行时版本"和"api兼容级别".
当我将"脚本运行时版本"设置为".NET 3.5 Equivalent"时,我可以选择".NET 2.0"和".NET 2.0 Subset"之间的"api兼容级别".但为什么这两个选项值不同?它们不应该引用相同的.NET版本值吗?两个不同选项中的".NET"这个词是什么意思?Unity3D实际使用哪个.NET版本?
而且,当我将"脚本运行时版本"设置为".NET 4.6 Equivalent"时,我可以选择"api兼容级别"作为".NET4.6".但是为什么这两个选项值目前是相同的?
另一方面,我在Microsoft网站上发现了一些介绍.NET系统的手册,他们说有.NET标准,.NET Framework,.NET Core和Mono.根本没有独立的".NET"实体.
那么,Unity版本的"脚本运行时版本"和"api兼容级别"中的.NET版本实际上是什么意思呢?
事实:
Unity2017.1.0之前没有"脚本运行时版本"选项
.NET Framework具有良好的向后兼容性,这意味着.NET 2.0组件能够在.NET 3.5上运行而不会中断.
当我们谈论.NET版本时,它总是指.NET Framework的版本.
Unity3D正在将运行时更新到.NET 4.6.
推断:
.NET Framework具有良好的向后兼容性,单声道也是如此.
Unity3D使用mono作为运行时,相当于.NET 3.5
Unity3D仅使用.NET 2.0功能进行编译,但运行.NET 3.5运行时.这就是"脚本运行时版本"为".NET 3.5"时"api兼容级别"为".NET 2.0"的原因
Unity3D正在更新以在.NET 4.6运行时使用.NET 4.6功能.这就是"脚本运行时版本"为".NET 4.6"时"api兼容级别"为".NET 4.6"的原因
这是另一个相关问题:当Mono支持.NET 3.5时,为什么Unity使用.NET 2.0?
和相关的主题:https://forum.unity.com/threads/to-linq-or-not-to-linq.223887/
Unity Player设置的"脚本运行时版本"和"api兼容级别"中的.NET版本实际上是什么意思?
API兼容级别:
只是一个选项,指定编译器应如何编译项目.它们是相同的.Net版本.请参阅下文,了解每种选项的效果.
.NET 2.0子集
.NET 2.0正好相反.
脚本运行时版本:
这是您选择要使用的.NET版本的位置.更改此项将允许您使用选择.NET API和runt-time版本.
因此,选择.NET 4.6允许您使用.Net 4.6 API来编写代码,Unity将在您的游戏中包含.NET 4.6运行时.同样的事情适用于.NET 3.5.
不知道为什么他们都有"等价"作为后期修复?这是因为在Unity中删除或删除了一些API和功能.您会注意到这一点,但这仅适用于少量的.NET API.其中大多数都受到支持.
而且,当我将"脚本运行时版本"设置为".NET 4.6 Equivalent"时,我可以选择"api兼容级别"作为".NET4.6".但为什么这两个选项值在这个时候是相同的???
不.那不是真的.您只能在"脚本运行时版本"选项中看到这两个选项,但如果"API兼容级别"设置为".NET 4.6",则无法选择".NET 3.5 ".
如果您尝试此操作,Unity应重新启动,然后为"Scripting Runtime Version"选择".NET 3.5"并自动将"API兼容级别"从".NET 4.6"更改为".NET 3.5".
因此,如果".NET 4.6"为"API兼容级别",则还必须选择".NET 4.6"作为"脚本运行时版本".
Unity3D实际使用哪个.NET版本?
您在"脚本运行时版本"菜单下选择的那个.
我想知道为什么在将"脚本运行时版本"设置为".NET 3.5"时,我只需要为"api兼容级别"选择".NET 2.0"或".NET 2.0 Subset".当"脚本运行时版本"等于".NET 3.5"时,我认为"api兼容级别"应该是".NET 3.5"或".NET 3.5 Subset".这在Unity中很奇怪.这里出了什么问题?
授权.
有一个许可问题.Unity的公司更新运行时的唯一方法是向Xamarin支付大笔资金,因为Xamirin制作了Unity运行时Unity正在使用并且在LGPL下.他们不想这样做.我注意到他们能够在与微软合作并在去年加入 .NET基金会后更新单声道运行时间.