unity的c#脚本和标准的c#语言有什么区别和联系?unity是 ...
目前这个星球上有常见的两个C#引擎,[*]一个是Xamarin的Mono(开源的)
[*]一个是微软的 .net framework。
你所说的标准C#,应该是指微软的 .net framework里的吧,它目前暂时只能Windows运行(未来不是)。
Unity中,则使用的是开源的Mono引擎,是跨平台的,Windows、Linux都行。
除了不同的引擎,C#还有版本之分。
比如说,Java有Java 6, Java 7, Java 8;C#也有分C# 5.0 , C# 6.0等不同版本,每个版本都有一些新的语法特性。
Mono引擎的开发,理论上是严格的向微软的C#兼容的。语言层面上应用起来,没有多大的区别。
所以,要讨论语法区别的细节,还要知道,哪个Mono的版本,跟哪个 .net framework C#的版本做比较....
Unity 5.4之前,使用基于Mono 2.x版本的Unity特制版。这个版本相当于 微软 .net framework 3.5版本里的C#.......
因此,Unity的C#脚本,有很多的特性是没有实现的。
好消息时,Unity 5.5之后,官方开始更新它们的Mono引擎了,像async/await的语法特性,也逐渐被支持了。
题外话,微软正在实施开源战略,.net framework会在未来更开放,其核心部分分出了 .net core库,而 .net core 可能会在未来也成为Mono的底层一部分。
如果你想更深入了解,可以上StackOverflow上看更深入的技术差异。比如这些:
What‘s the difference between .NET Core, .NET Framework, and Xamarin? 目前这个星球上有常见的两个C#引擎,
[*]一个是Xamarin的Mono(开源的)
[*]一个是微软的 .net framework。
你所说的标准C#,应该是指微软的 .net framework里的吧,它目前暂时只能Windows运行(未来不是)。
Unity中,则使用的是开源的Mono引擎,是跨平台的,Windows、Linux都行。
除了不同的引擎,C#还有版本之分。
比如说,Java有Java 6, Java 7, Java 8;C#也有分C# 5.0 , C# 6.0等不同版本,每个版本都有一些新的语法特性。
Mono引擎的开发,理论上是严格的向微软的C#兼容的。语言层面上应用起来,没有多大的区别。
所以,要讨论语法区别的细节,还要知道,哪个Mono的版本,跟哪个 .net framework C#的版本做比较....
Unity 5.4之前,使用基于Mono 2.x版本的Unity特制版。这个版本相当于 微软 .net framework 3.5版本里的C#.......
因此,Unity的C#脚本,有很多的特性是没有实现的。
好消息时,Unity 5.5之后,官方开始更新它们的Mono引擎了,像async/await的语法特性,也逐渐被支持了。
题外话,微软正在实施开源战略,.net framework会在未来更开放,其核心部分分出了 .net core库,而 .net core 可能会在未来也成为Mono的底层一部分。
如果你想更深入了解,可以上StackOverflow上看更深入的技术差异。比如这些:
What‘s the difference between .NET Core, .NET Framework, and Xamarin? u3d的c#是一个特定版本的c#语法,符合那个版本的标准。(其实就是2.0包含一部分3.0语法和核心组件)标准的c#语言大概是指语言协会的c#标准了。现在的版本是7.0。
c#本身作为一个语言也只有语法词法这些语言相关的规定吧。至于backend rutime gc compiler这些都是看各家实现的。只是这个语言有个最大的玩家就是微软,然而微软当年也没能让c#很火。反倒是这么棒的语言让u3d这种同人给玩火了。 Unity 2017.3已经开始支持.Net4.6 Framwork ,不过这是实验性质的,对应C#版本应该是5.0以上.
unity3d的c#代码只是习惯性的被叫做脚本,用起来和c#一样。现在unity用的是c#4和不完整的dotnet3.5,运行时实现是第三方的mono和自己的li2cpp。区别就是语法不是最新的,库支持不是最完整的,其他用起来不会有区别。官方说以后会支持最新的c#,值得期待。
页:
[1]