介绍

项目升级 Unity 版本,需要在 Unity 2019 LTS 与 Unity 2020 LTS 之间选择。

过往的平台要求

Unity 5.3.8 不支持在 macOS Mojave 及以上版本运行

Unity 5.6.6 存在 32 位程序,不支持在只支持 64 位程序的 macOS Catalina 及以上版本运行

Xcode 14 只支持在 macOS Catalina 10.15.4 及以上版本运行。苹果的 Xcode 基本上与 macOS 版本绑定,而 iOS 与 Xcode 版本绑定。

自 2019 年 8 月 1 日起,您在 Google Play 上发布的应用必须支持 64 位架构。这意味着必须使用支持 IL2CPP on Android 的 Unity 2017.4.16 LTS 及以上版本

从 2021 年 8 月起,新应用需要使用 Android App Bundle 才能在 Google Play 中发布。这意味着必须使用 Unity 2018.3 以及上版本

基本上就是说,如果要在目标平台上架,必须遵守平台的要求。主要需要考虑的平台:

  • iOS 的 AppStore,Apple
  • Android 的 Google Play,Google

虽然上面列举的所有特性现在 Unity 2019 LTS 都支持,但是考虑到支持期结束后,如果平台增加新的需求就会导致再次升级。

重要特性

LTS 支持时间

  • Unity 2020 LTS 支持时间到 2023/03/11,还有两年
  • Unity 2019 LTS 支持时间到 2022/06/09,还有一年

支持时间更长意味着未来不用再次升级,从而减少升级导致的工作量,如游戏性能优化、兼容适配、工作流改变、编辑器脚本修复、第三方插件升级等繁重工作。

帧数更稳定

这个更新的顺序是 Unity 内部自定义的,无法通过外部修改,只能通过升级 Unity 实现。

打包时间更快

随着项目变得复杂,构建时就会涉及更多的代码与功能,从而影响生产力。在 2020 年,我们重整了许多 Unity 编译引擎子系统,来优化构建时间。 全新的配置设定可加快运行模式的开关时间;C# 8 将极大提高编程效率,而新整合的 Roslyn Analyzer 可以监测代码的质量。安全模式和分析工具可加快编程速度、提高游戏性能。

Unity 2020.2

决定性编译

在编译C#脚本时,决定性编译可忽略多余的程序集定义参照再编译来优化编译时间,让转换过程更加高效、从而大大改善工作流程。如果项目并未做出代码上的修改,比如仅修改了材质、着色器或预制件,.NET程序集到C++的IL2CPP转换流现在会被跳过。编译管线现在同样支持Roslyn分析器。

预制件

预制件改进包括了性能、扩展性和缓存的改善。在测试中,文件查找的速度快了50倍,其他功能的速度则更快。预制件现在支持Asset Postprocessor,允许在预制件上添加后处理效果。

高清渲染管线(HDRP)

更新包括了新的光照调试工具、贴花(Decal)系统的改进,新的路径追踪(path-tracing)支持有机材质的雾气吸收和次表面散射;新的景深模式可生成带高质量失焦模糊等效果的路径追踪图像;以及光线追踪的新调整与新功能(预览版)。

通用渲染管线(URP)

URP更新了一系列的新功能,已经可以替代Unity内置渲染管线。更新的屏幕空间环境光遮蔽(SSAO)可以提升氛围光的图像质量;新的Lit Shader开始支持额外的表面输入(surface input);新的复杂受光着色器(ComplexLit Shader)可以降低游戏数据量、提高加载时间;透明外层(Clear Coat)贴图则可用于模拟汽车喷漆等材质。

Unity 2020.1

Prefab编辑器改进

Prefab编辑器是在2018.3时发布的,它可以编辑一个Prefab预制件,但也因为是另开窗口的关系,当你想要和场景其他对象对照的时候不太方便。从2020.1开始编辑Prefab物件会默认在场景内编辑。场景内其他的对象会变成灰色,当然你也可以切换显示或隐藏。

打包报告检视 Build Report Inspector

Unity从2018开始导入了Build Report API,专门用来调试打包过程所发生的问题,比如打包为什么慢?有什么优化空间?为什么漏文档等等?产生出来的报告就可以显示在这个Build Report Inspector打包报告检视窗口里。目前这个功能才开始进入预览,源码会放在Github上。

独立调试窗口 Standalone Profiler

以往的调试器Unity Profiler是集成在编辑器内的,这个调试器可以观看项目每一帧的消耗到底花在哪里,方便评估优化方案,但因为产出的报告也包含了Unity编辑器的消耗,数值混在一起反而容易造成判断错误。从2020.1开始这个Profiler可以单独开启,意味着整个调试流程就会移到Unity之外作为单独运行的程序,所产出的报告就会更贴近项目运行的真实消耗。 要运行这个程序可以从Window->Analysis->Profiler(StandaloneProcess)来开启。

编辑器

数组与列表:现在可在检视器中重新排列。开发者可使用[NonReorderable]属性来禁用排列功能。

Presets 改进

2019有介绍过Presets功能,专门用来记录当下对象属性,在需要的时候可以把这个属性套用到其他对象上,问题是每次都是记录全部属性。从2020.1开始就可以只复制和应用特定属性了。

Device Simulator 装置模拟器

刚提到Remote被Remove掉了,如果不是真机测试,可以试试这个Device Simulator装置模拟方案,可以在编辑器内模拟移动设备播放。可以视为在开发环境用模拟器运行的概念。

光照设置文件 Lighting Setting Assets

全新的光照设置文件,可以让你把不同光照设置存下来,未来你可以调好各种不同环境光照,比如阴天、晴天、雨天、室内、室外、夜晚等等,并在需要的时候加载。 以往的光照信息是跟着场景的,从2020开始,照明设置会变成独立的设置文件,存储预先计算的全局光照资料相关所有信息。 这样的好处是A场景的光照设置也能给B场景应用,未来在场景氛围的制作会更简单。

总结

考虑到要支持 iOS 的 AppStore 与 Android 的 Google Play,最好使用支持时间更长的 Unity 2020 LTS 版本。毕竟项目未来会维护较长的时间。

参考资料

虽然博客还没有支持中文,但是发布页面已经完全支持了,所以在阅读时可以直接切换成中文。

Unity 2020 LTS

Unity 2020.2

Unity 2020.1