Unity 中使用C#6.0

发表于2017-10-16
评论0 3.8k浏览
如何在Unity 中使用C#6.0,可能有很多开发者觉得不可能,但是如果大家有去尝试使用,发现确实是在unity 中是可以使用C#6.0的。

Unity使用的结构 CLR 2.0 已有很长的时间,但几乎所有最新的 C# 功能  不需要最新版本的 CLR。微软和Mono编译器可以为 CLR 2.0 编译 C# 6.0 代码。
C# 4.0 附带的 后期绑定 (dynamic) 功能仍不可以在Unity中使用,因为它依赖于 CLR 4.0,我们还没有。

好吧,该怎么办?
1.  将这个库中的 smcs\smcs\bin\Release\smcs.exe 复制到 \Unity\Editor\Data\Mono\lib\mono\2.0 文件夹中。只是复制,没什么可替换。

2.  创建一个新的Unity项目 或 打开一个现有。请确保将Project Settings/Player/API Compatibility Level ( 兼容级别)设置为.Net 2.0。

3.  将 mcs.exe 或 Roslyn 文件夹复制到您的项目根。

就是这样。

它是如何工作的?

smcs.exe 接收 和 重定向编译请求从Unity到一个可用 C# 编译器使用下列规则:
1.  如果当前项目中包含 Roslyn 文件夹,然后将使用 Roslyn C# 6.0 编译器;
2.  否则如果 如果当前项目中包含 mcs.exe,然后将使用此Mono C# 6.0 编译器;
3.  否则如果在项目内部的某个地方有  AsyncBridge.Net35.dll (多线程相关),然后Unity的 5.0 C# 编译器会被使用 (\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\mcs.exe);
4. 否则 存储 编译器将使用 (\Unity\Editor\Data\Mono\lib\mono\2.0\gmcs.exe)。
It means that Unity will use the alternative compiler only in those projects, where you have explicitely expressed your wish to do so. Otherwise, it will use the stock compiler as usual, and the only bad thing that can happen is if smcs.exe crashes for whatever reason instead of doing its job. Then you can just delete it and continue as if nothing ever happened。

它意味着Unity 将使用另一种编译器只有在这些项目中,在那里你有明确表示你希望这样做。否则它会使用存储编译器像往常一样,唯一不好的事情是,如果 smcs.exe 崩溃不管出于什么原因而不是做它的工作。然后你就可以删除它然后继续仿佛什么都不曾发生。


需求:

http://forum.unity3d.com/threads/c-6-0.314297/

http://forum.unity3d.com/threads/free-trial-unity-c-6-0-compiler.314800/

解决:

https://bitbucket.org/alexzzzz/unity-c-5.0-and-6.0-integration/src


http://blog.csdn.net/u010019717/article/details/48771545

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

标签: