Unity 2020.2

工程师工具

通过 Unity 2020.2 改进脚本工作流程。使用我们为工程师提供的改进的工具更快地迭代和优化项目,最大程度提升性能。 

Unity 2020.2 新增功能

了解 Unity 2020.2 中为工程师提供的一些主要改进和新功能。有关完整详情,请查看发行说明。

通过确定性编译缩短编译时间

随着项目复杂性的增加,新代码更改需要更长时间进行编译,会对团队的生产效率造成负面影响。Unity 2020.2 为 C# 脚本的编译提供“-deterministic”编译选项。如果程序集的公共元数据不会在为编辑器编译脚本时更改,此选项则可以避免不必要地重新编译程序集定义 (.asmdef) 引用。要减少对有很多直接和/或间接引用的程序集进行更改所需的迭代时间时,这尤其有用。

了解详情

C# 8 支持

Unity 2020.2 支持所有最新的 C# 8 功能和增强,默认接口方法除外。这包括可为 null 的引用类型,使编译器在你每次尝试向引用类型变量分配 null 时显示一条警告。带模式匹配的 Switch 表达式是一种更精简的条件代码编写方式。

有关 C# 8 的全部新内容的完整概述,请参阅 Microsoft 文档

C#_8_support.cs (C#)
public static RGBColor FromRainbow(Rainbow colorBand) =>
    colorBand switch
    {
        Rainbow.Red    => new RGBColor(0xFF, 0x00, 0x00),
        Rainbow.Orange => new RGBColor(0xFF, 0x7F, 0x00),
        Rainbow.Yellow => new RGBColor(0xFF, 0xFF, 0x00),
        Rainbow.Green  => new RGBColor(0x00, 0xFF, 0x00),
        Rainbow.Blue   => new RGBColor(0x00, 0x00, 0xFF),
        Rainbow.Indigo => new RGBColor(0x4B, 0x00, 0x82),
        Rainbow.Violet => new RGBColor(0x94, 0x00, 0xD3),
        _              => throw new ArgumentException(message: "invalid enum value", paramName: nameof(colorBand)),
    };
参阅 Microsoft 的 C# 8 指南

程序集定义设置中提供根命名空间

C# 中的命名空间是一种有效的代码组织方式,可以避免与其他资源包和库出现类命名冲突。现在,根命名空间在 asmdef 检视面板中是以新字段的形式提供的,用于在 Unity、Visual Studio 和 Rider 中创建新脚本时自动添加命名空间。

如果计划使用此功能,请注意将 Visual Studio 和 Rider 资源包更新为最新版本。

了解详情
对两个项目的串行和并行 IL2CPP 转换在多线程转换之前和之后进行比较。红线是内部演示,橙线是来自外部工作室的项目。

版本编译更快

Unity 2020.2 在版本编译时间方面进行了重大改进。如果更改不涉及代码,例如材质、着色器或预制件,现在在构建播放器时,会完全忽略从 .NET 程序集到 C++ 的 IL2CPP 转换。 

在 Unity 2020.2 中,从单线程到多线程,IL2CPP 转换利用了现代多核处理器,大幅减少了总体 IL2CPP 播放器构建时间,如上述测试项目数据所示。 

了解详情

一致的 Time.deltaTime

Unity 2020.2 修复了不一致的 Time.deltaTime 值,这些值会造成游戏过程中对象移动的卡顿。TimeManager 接口现在经过重构,帧时间计算更稳定,因而游戏在稳定帧率运行时,对象移动更顺畅。Unity 2020.2 在 iOS、macOS、PS4、Switch、tvOS、UWP、Windows 和 Xbox One 上支持这些事件稳定性改进。以后将在 Android、Windows/Linux 上对 Vulkan 和 XR 进行改进。有关详情,请查看博客文章

了解详情
可以看出,速度的总体优化在 12 至 800 余倍之间,处理的导入器为 100 至 5000 个(有关总体改进,请参阅右侧图表)。

性能改进

Unity 2020.2 进行了几项重要优化,包括对嵌套预制件的优化,可大幅加快排序和查找的速度。经过测试,在编辑器脚本化导入器注册函数中的搜索加快了高达 800 次。最后,优化团队还重构了 Camera.main,减少了它的查询时间,在某些项目中,可减少数百毫秒。

了解详情

编辑器协程和通过可配置的进入运行模式加快工作流程

实验性功能可配置的进入运行模式不再允许你禁用“域重新加载”和/或“场景重新加载”操作来加速进入运行模式。随着编辑器协程结束预览阶段,你可以在编辑器中开始执行迭代器方法,这类似于 MonoBehaviour 脚本中的 协程在运行时的处理方式。

了解详情

Unity Linker 的托管代码剥离

Unity Linker 执行静态分析以剥离托管代码。它还识别大量属性,使你在无法识别的情况下可对依赖项进行注释。在 Unity 2020.2 中,该工具获得了 API 更新从而与 Mono IL Linker 一致。从 Unity 2020.1 开始,Unity Linker 可以检测部分简单反射模式,减少了 link.xml 文件的使用需求。

了解详情

性能分析器更新

现在,可以在性能分析器窗口中添加图表,以获得现有或用户生成的性能分析器统计信息的更多性能洞见和上下文。同时,流程事件可以在性能分析器时间轴中显示序列任务依赖项,帮助你确定应用程序的时间花在操作序列中的哪些任务上。

现在可以在播放器中可视化渲染和内存性能分析器统计信息。在播放器中使用运行时 API 公开现有性能分析器统计信息,读取现有性能分析器区域(如内存、渲染和其他)的性能统计信息值。在目标设备上运行你的项目或根据你自己的需求构建其他性能工具时,使用这些数据可显示性能抬头显示 (HUD)。

了解详情

Roslyn 分析器改进

编译管线现在支持 Roslyn 分析器。你可以在 Unity 编辑器内对 C# 代码分析器进行异步后台运行,而不必中断迭代工作流程。你也可以从命令行同步运行。

Roslyn 分析器和 Unity 项目中的规则集文件是功能强大的工具,可以帮助检查代码的样式、质量和其他问题。你可以使用现有分析器库来检查代码,也可以编写自己的分析器来提升组织内的最佳做法或惯例。

了解详情

Unity 安全模式

Unity 安全模式改进了 Unity 在打开有脚本编译错误的项目时的行为方式。如果在编辑器启动时检测到编译错误,现在会提示你进入安全模式。这为你提供了适合解决编译错误的环境,你可以快速使项目回到可运行的状态,而无需不必要地等待导入项目的资源。通过减少库文件夹包含不正确导入组件的情况,此功能可简化和加速将项目升级为新 Unity 版本的过程,可帮助团队处理大型项目。

了解详情

立即下载 Unity 2020.2

立即使用所有上述功能以及更多。

我们使用 Cookie 来确保为您提供网站的最佳体验。有关更多信息,请访问我们的 Cookie 政策页面

明白了