[2018年6月15日] Unity 3D 如何安装C# 7.x+ 环境

xiaoxiao2021-03-01  17

C#7.3支持Unity 2017.2+

测试平台

Unity 2017.4.3f1, 2018.1.0f2

Windows 10 x64 (editor + mono and il2cpp builds)

macOS 10.12 (editor + mono build)

Android 7.1.1 (mono and il2cpp builds)

Visual Studio 2017 15.8.0 Preview 1.1

这是什么?

这是一种用最新的使用Roslyn代替Unity的C#编译器,它允许您使用C#7.3在Unity中编写脚本。

如果你确认要使用

先看看实验性的官方的Unity Incremental C#编译器的文章。

Unity增量编译器

我们正在努力使我们更接近500ms目标的一个解决方案是一个新的编译管道,其中包括一个新的C#递增编译器。 我们新的C#编译器使用微软的Roslyn开源编译器项目构建,旨在显着加快对C#代码的迭代,并使您能够访问最新且最强大的C#7.2功能。

构建我们自己的编译器有几个优点。 首先,我们的编译器可以缓存从一个编译到下一个编译的所有类型的数据,这意味着代码和引用没有改变不会被重新编译或重新载入(因此名称为“incremental compiler”)。 其次,尽管这个编译器可以用来编译任何dotNET代码,但它是用关于编译Unity项目的先验知识编写的,这意味着我们可以做其他编译器不能做的事情(或跳过)。

初步数字

在上面的图片中,您可以看到编译器缓存对编译时间的影响。 请注意,编译第一个程序集的时间与内置Unity编译器和增量编译器(大约1.8秒)相同。 这是因为作为我们编译的第一个程序集,不会发生缓存。 然而,后续的编辑却从缓存中获益匪浅。

正如您所看到的,当在代码和Unity之间来回迭代(当它通常最痛时)时,随后的“增量”编译会实现最有趣的性能增益。上面的图像显示了更改许多其他人引用的程序集中的一个文件的效果。有问题的程序集(Unity.Mathematics)被重建,然后依赖它的所有程序集都会被快速重新发射。该图显示了一些重要的事情。首先,它表明编译器针对迭代更改进行了优化,其中一次只更改了几个文件。其次,它表明为了从编译器中获得最高的性能,使用asmdef文件模块化代码至关重要。编译器很大程度上依赖于分析程序集之间的依赖关系来重新编译最小值。将一个大的Assembly-CSharp.dll中的所有代码拖拽出来只会导致性能提升。数据上的一些免责声明

您看到的数字是我们在实验室中能够测量的数字,随着我们添加功能并进行其他更改,可能会有所变化。此外,您看到的数字以毫秒为单位,但将这些数字相加并不等于重新编译和域重新载入的总时间(用户感觉到的时间)。这是因为即使使用内置编译器,其中一些编译也是并行发生的。此外,新的编译器不会影响执行“域重新载入”(或enter-playmode)所需的时间。

其他有趣的事情从编写我们自己的编译器中得到的其他很酷的东西是对C#7.2的支持,它为您提供漂亮的引用返回,只读和引用。 我们还为您提供编写自己的语言规则和自定义错误消息的能力。 如果您希望在Update方法中或在for循环中使用GetComponent <>时执行编码约定或生成编译错误,这非常有用。要我帮忙吗?如果你想试试这个新的编译器,我们现在可以提供早期的alpha版本。 请参阅下面的安装说明。 这项技术还处于初期阶段,您可能会发现问题 - 我们希望得到您的反馈,好和不好:)安装说明增量编译器作为一个包可以通过包管理器 manifest 包含在项目中。1- 下载并安装Unity 2018.1 BETA 12编译器能与Unity的早期版本的2018 Beta版本一起工作,但是如果没有B12,您将无法调试代码。2- 将其添加到 manifest 文件中 Code (JavaScript): {      "dependencies" :  {          "com.unity.incrementalcompiler" :  "0.0.30"      } ,      "registry" :  "https://staging-packages.unity.com" }

3- 在项目的 player settings 中将您的脚本运行时设置为版本4.x , Unity加载的编译器客户端需要这个。

4- 删除您的项目的Library / ScriptAssemblies文件夹这将删除由内置编译器编译的最后一个程序集,并确保新编译器以新的完全重新编译开始。5- 从首选项窗口配置 Compiler 一个新的“Compiler”部分被添加到Unity首选项窗口中。 您可以从那里控制一些编译器设置。

反馈

我们很乐意听到您的想法!

请随时在此发布您的问题和意见。

原文:https://forum.unity.com/threads/unity-incremental-c-compiler.523993/

如何安装

从下载页面下载 CSharpVNextSupport 4.1.0。                                                                                                                  

将 CSharp70Support 文件夹从存档中解压缩到 Unity 项目的根目录中。 它应该放置在 Assets 文件夹旁边,而不是放在里面。                                                                                                                                                                                                                                    

将 CSharp70Support/CSharpVNextSupport.unitypackage 导入到项目中。                                                                                                                  

如果此时看到任何编译错误,请重新启动编辑器或运行全部重新导入。                                                                                                                  

删除项目文件夹中的所有 .csproj 文件以强制Unity重新创建它们。                                                                                                                  

[可选]在Windows上,使用管理员权限运行一次 CSharp70Support / ngen install.cmd。 它将使用Ngen预编译csc.exe和pdb2mdb.exe。 它将削减每个C#项目几秒钟的编译时间。

原文:https://bitbucket.org/alexzzzz/unity-c-5.0-and-6.0-integration/src/831269ba3a61?at=default

转载请注明原文地址: https://www.6miu.com/read-3200193.html

最新回复(0)