找回密码
 立即注册
查看: 399|回复: 4

[笔记] unity的c#脚本和标准的c#语言有什么区别和联系?unity是 ...

[复制链接]
发表于 2021-11-25 19:20 | 显示全部楼层 |阅读模式
目前这个星球上有常见的两个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?
发表于 2021-11-25 19:25 | 显示全部楼层
目前这个星球上有常见的两个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?
发表于 2021-11-25 19:28 | 显示全部楼层
u3d的c#是一个特定版本的c#语法,符合那个版本的标准。(其实就是2.0包含一部分3.0语法和核心组件)标准的c#语言大概是指语言协会的c#标准了。现在的版本是7.0。
c#本身作为一个语言也只有语法词法这些语言相关的规定吧。至于backend rutime gc compiler这些都是看各家实现的。只是这个语言有个最大的玩家就是微软,然而微软当年也没能让c#很火。反倒是这么棒的语言让u3d这种同人给玩火了。
发表于 2021-11-25 19:29 | 显示全部楼层
Unity 2017.3已经开始支持.Net4.6 Framwork ,不过这是实验性质的,对应C#版本应该是5.0以上.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-11-25 19:37 | 显示全部楼层
unity3d的c#代码只是习惯性的被叫做脚本,用起来和c#一样。现在unity用的是c#4和不完整的dotnet3.5,运行时实现是第三方的mono和自己的li2cpp。区别就是语法不是最新的,库支持不是最完整的,其他用起来不会有区别。官方说以后会支持最新的c#,值得期待。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-11 02:27 , Processed in 0.103658 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表