Unity是使用其他版本的C#,还是全部相同?它看起来与常规C#不同,但其中包含一些常规C#元素。
Unity是使用其他版本的C#,还是全部相同?它看起来与常规C#不同,但其中包含一些常规C#元素。
Answers:
如其他答案所述,Unity 4.x使用基于Mono 2.6的Mono版本的修改版本
在大多数情况下,它与.Net 2.0兼容,尽管我没有设法找到Mono 2.6特定的兼容性列表。
它看起来与常规C#不同,但其中包含一些常规C#元素。
如您对问题的评论之一所述,这可能是由于Unity的特定脚本API而不是语言本身引起的。
例如,一个典型的Unity项目中的许多代码包含在一个名为MonoBehavior的类的子类中。这些是在Unity Editor环境中放置在GameObjects上的组件。这种体系结构导致C#代码在许多方面看起来与典型的C#代码不同(无论如何对我来说):
实际上,我在Unity当前的C#版本中缺少的最大C#语言功能是对异步以及相关关键字和功能的支持。在协程中类似的概念是协程。它们在主线程上执行,因此不是真正的异步,但是允许将长时间运行的代码分解为多个帧。仍支持较低级别的多线程。
async
在C#中也不像在多线程中那样是真正的异步-它也运行在主线程上。从使用角度来看,协程和异步之间最大的不同是代码运行的时间。
Unity 4 使用 Mono 2.6,它是.NET框架的完整实现,包括C#语言。
我不确定它看起来有什么不同,但是请记住,Unity支持多种语言,所有这些语言都可以在同一个Mono运行时上运行。您可能将C#与UnityScript混淆了吗?
Unity使用常规C#。
再说一次,当您在Unity中编写C#时,将使用它们的许多库,但据我所知,除了下面列出的区别外,C#中所有可能的功能在Unity中都是可能的。
通过Windows,与Windows窗体和ASP相关的.Net的更具体领域是禁止的。
虽然可以使用Visual Studio进行编辑和编译时错误,但必须在Unity IDE中进行构建和运行。
Unity使用Mono是.Net的开源实现,这意味着存在细微差别。
其他帖子回答了Unity使用的C#版本是否与“常规” C#不同的问题。既然你是明确要求可能从这样的普通版本不同,我将分享只有微小的差别比较在工作中的C#我使用的时候,我注意到(即C#4.0中的Visual Studio 2010及更高版本)的某些元素和C#的统一,这我不能在函数定义中使用默认值作为参数。这是您必须更仔细地设置项目才能使用更新版本的C#。有关更多说明,请参见此链接。
编辑: 我留下这个答案,因为据我所知,这是一个误解,发生在很多人身上。