Unity 5.3.5p8的C#编译器升级

注意:该版本是单独升级C#编译器的测试版!请使用文中提供的下载链接!

基于Unity 5.3.5p8的C#编译器升级!下载链接

试用该版本前请先备份项目,遇到任何问题请及时反馈到Unity官方中文社区(http://forum.china.unity3d.com/)。

新升级的Mono C#编译器(对应Mono 4.4)将用于编译所有的C#脚本。

重要注意事项

Unity编辑器及播放器所使用的Mono运行时还未升级。

新编译器仍针对C# 4。是旧的编译器也支持的版本。

新编译器目标框架为.Net 3.5,也是之前支持的框架。

这只是升级Mono/.Net迈出的第一步。

FAQ

对现有项目有何影响?

该升级应该能够“正常工作”,它并未添加任何新功能。不会对现有项目带来任何影响,还有些小益处。新的Mono和C#编译器与之前相比运行速度普遍更快,而且修复了多年以来的Bug。

有什么需要注意的?

理论上有可能在运行时产生奇怪的问题。但我们自己测试的过程中并未发现。

大多数情况下都会在编译时发现问题。目前为止我们遇到的情况有:

有些无效的C#代码是旧的编译器允许但新的编译器会报错的

涉及到编译器特定属性(安装目录、名称等)的代码或插件会出错

另外,如果你经常使用MonoDevelop或VSTU(Visual Studio Tools for Unity)调试C#代码,那欢迎向我们反馈你遇到的任何问题。编译器输出结果应该是一致的,但调试器可能对于某些生成的代码模式会很敏感。

有什么重大变化吗?

新编译器有一处已知的重大变化,就是闭包获取foreach变量的方式,这是由C#语言团队做出的改变。也就是说,如下代码将输出“b a r”而非目前的“r r r”:

var actions = new Action[3];
var j = 0;
foreach (var c in "bar")
actions[j++] = () => Console.WriteLine(c); foreach (var a in actions)
a();

使用较新的VS或Mono均会得到这样的结果,这也是目前WSA平台所表现的行为,具体细节请看:

https://msdn.microsoft.com/en-us/library/hh678682(v=vs.110).aspx

是否修复了“foreach”内存分配的问题?

某些情况下是的,问题描述请看:

http://stackoverflow.com/questions/18552669/memory-allocation-when-using-foreach-loops-in-c-sharp

对Array、List、Dictionary或HashSet做“foreach”遍历是不会分配内存的。

为何不面向C# 5或C# 6?

第一步我们希望先推出新的编译器。未来再启用新的C#特性。

支持C#语言新特性面临的几个问题:

目前的生态系统不能完全把控新的C#(脚本更新器、调试器、特定的MonoDevelop/VisualStudio版本)

目前仍以旧的.Net 3.5为目标框架。在旧框架上支持新的C#或多或少会导致些迷惑。从头开始编写所有代码也许可行,但对于已有代码来说可能需要C#语言和框架都是最新才可以。

资料文献

原文出处:http://forum.china.unity3d.com/thread-19893-1-1.html

Unity 5.3.5p8 C#编译器升级的更多相关文章

  1. 从Unity3D编译器升级聊起Mono

    接前篇Unity 5.3.5p8 C#编译器升级,本文侧重了解一些Mono的知识. Unity3D的编译器升级 新升级的Mono C#编译器(对应Mono 4.4) Unity编辑器及播放器所使用的M ...

  2. CentOS 7 升级gcc/g++编译器

    gcc的升级必须要使用源码进行升级,也就说,必须要使用源码进行编译才行.我的7.2的CentOS目前自带的gcc是4.8.5的,gcc从4.8之后开始支持C++11,但是鉴于现在C++14.C++17 ...

  3. Unity GameObject.activeSelf, GameObject.activeInHierarchy,GameObject.SetActive和SetActiveRecursively

    activeSelf(read only只读):物体本身的active状态,对应于其在inspector中的checkbox是否被勾选activeInHierarchy(read only只读):物体 ...

  4. 用ECMAScript4 ( ActionScript3) 实现Unity的热更新

    unity热更新是一个经久不衰的话题.除了最常见的lua之外,还有如JSBinding,C#等等.这里介绍一个使用ECMAScript4进行热更新的方案.它吸收了各家的优点,特色很鲜明. 项目地址: ...

  5. Unity中资源打包成Assetsbundle的资料整理

    最近在研究Unity中关于资源打包的东西,网上看了一堆资料,这里做个整合,说整合,其实也就是Ctrl-C + Ctrl-V,不是原创 首先为了尊重原创,先贴出原创者的文章地址: http://blog ...

  6. Unity资源Assetbundle

    转  Unity资源打包之Assetbundle 本文原创版权归 csdn janeky 所有,转载请详细注明原创作者及出处,以示尊重! 作者:janeky 原文:http://blog.csdn.n ...

  7. Unity资源打包之Assetbundle

    转  Unity资源打包之Assetbundle 本文原创版权归 csdn janeky 所有,转载请详细注明原创作者及出处,以示尊重! 作者:janeky 原文:http://blog.csdn.n ...

  8. 关于Unity中Shader的使用

    在游戏的开发过程中,程序员不太会自己去写shader,因为写起来很麻烦,而且只有Unity会报错,编译器也没有什么提示. 通常是拿别人的shader改一改,当然,程序员还是要能看懂和会一点shader ...

  9. keil编译器从ac5迁移到ac6

    今天在安富莱的论坛上ac6的使用方法,所以,就小试牛刀玩了玩,终于ok了.使用keil5.25+stm32+hal库,5.23开始才支持ac6,因此keil版本不能太低. 可以参考:https://b ...

随机推荐

  1. PowerDesigner导出SQL脚本

    1. 先创建E-R图模型

  2. gitbook安装与使用之windows下搭建gitbook平台

    最近需要在GitBook中去阅读电子书 安装nodejs cnpm安装gitbook 解压书籍文件,并cd到书籍文件目录 gitbook serve 浏览器访问localhost:4000 先在win ...

  3. 《UML大战需求分析》阅读随笔(六)

    在我们做的代码设计中分为系统设计和程序设计.程序设计是系统设计中模拟程序的执行逻辑,定义客户机服务器对象合作的框架的那个部分.程序和事务设计中,作者讲述到程序和事务设计将系统设计制品放在一起,并作为系 ...

  4. 转:学习笔记:delphi多线程学识

    学习笔记:delphi多线程知识 最近一直在温习旧的知识,刚好学习了一下Java的线程安全方面的知识,今天想起之前一直做的Delphi开发,所以还是有必要温习一下,看看这些不同的编程语言有什么不同之处 ...

  5. PD PDM模型中关系设置为概念模型样式

      来自为知笔记(Wiz)

  6. selenium:org.openqa.selenium.WebDriverException: f.QueryInterface is not a function

    今天用selenium2遇到问题 org.openqa.selenium.WebDriverException: f.QueryInterface is not a function 查了好久最后终于 ...

  7. http请求get与post请求的几种实现

    [说明]:非原创,前两种post请求需要依赖Apache开源框架来实现:最后一种get/post请求则不需要依赖第三方框架 普通表单调用(post请求) /** * 普通表单调用 * 根据参数url, ...

  8. 【转】Java提高篇(三四)-----fail-fast机制

    转自:http://blog.csdn.net/chenssy/article/details/38151189  在JDK的Collection中我们时常会看到类似于这样的话:         例如 ...

  9. 统计学习方法 --- 感知机模型原理及c++实现

    参考博客 Liam Q博客 和李航的<统计学习方法> 感知机学习旨在求出将训练数据集进行线性划分的分类超平面,为此,导入了基于误分类的损失函数,然后利用梯度下降法对损失函数进行极小化,从而 ...

  10. 【BZOJ】4002: [JLOI2015]有意义的字符串

    题意 求$\left \lfloor \left( \frac{b+\sqrt{d}}{2} \right)^n \right \rfloor \pmod {7528443412579576937} ...