Version: 2021.2
Upgrading to Unity 2021.1
升级到 Unity 2019 LTS

升级到 Unity 2020 LTS

注意:按照版本顺序遵循此部分中的建议。例如,如果需要将项目从 2018 升级到 2020,请在阅读 2020 升级指南之前阅读 2019 升级指南,了解是否需要进行任何更改。

本页面列出了从 2019 版本升级到 2020 LTS 时在 Unity 2020 LTS 中可能对现有项目造成影响的更改。

Note that 2020 LTS is also known as 2020.3.

页面大纲


所有网格顶点都进行变换以实现更好的 UV 展开

Unity 可能会更改导入到项目中的 3D 对象的网格 UV。

Unity 会变换所有导入的网格顶点的位置以便采用 Unity 单位自动缩放。

From Unity 2020.1, Unity generates lightmap UVs using the transformed Mesh vertices, if you’ve enabled Generate Lightmap UVs. Prior to Unity 2020.1, Unity generated lightmap UV maps using the original imported Mesh vertex positions, before the automatic position transformation.

UVs generated after the vertex transformation are more accurate to the original shape and scale of your imported object. Back to top

所有资源包哈希都不同,因此会构建所有包

From Unity 2020.1, Unity generates a different hash for all asset bundles in your project. This ensures all bundles are built, including the ones with the same content but with different loadable paths. Back to top

多玩家 HLAPI 包不会在项目升级中自动安装

从 Unity 2020.1 开始,如果要升级的项目具有使用多玩家 HLAPI 的脚本,请从 Package Manager 安装多玩家 HLAPI 包。

From Unity 2019.1 to 2019.4, Unity automatically installed the multiplayer HLAPI package when you upgraded a project created in Unity 2018.4 or earlier. Back to top

使用渐进光照贴图改进了 LOD 烘焙

Unity 的渐进光照贴图由 CPU 和 GPU 光照贴图组成。

从 Unity 2020.1 开始,GPU 光照贴图支持细节级别 (LOD) 烘焙。

The CPU lightmapper uses the same baking algorithm and this lets Unity use all available CPU cores for faster baking times in Scenes with LOD values above 0.

若要在场景中升级 LOD,请清除烘焙光照贴图,然后重新生成它。为此需要执行以下操作:

  1. In the Unity Editor, Open Window > Rendering > Lighting Settings.
  2. In Debug Settings, select the drop-down menu on the Generate Lighting button, then select Clear Baked Data.
  3. Select Generate Lighting.

返回顶部

Adaptive Performance breaking changes

To update Adaptive Performance from 1.0 to 2.0, see the Adaptive Performance upgrade guide. Back to top

Xcode Project Generation

MacOS 独立 Xcode 项目构建路径选择已更改。现在必须提供所需目录的路径,并在目标目录中创建 .xcodeproj 和随附文件。 MacOS 构建文件夹不能位于项目目录中。 请参阅手册页面了解 Xcode 项目结构

返回顶部

粒子系统力场 (Particle System Force Field)

为了确保力场属性一致的行为,Unity 现在使用 30fps 的参考帧率作为模拟的基础。 如果您的应用使用不同的帧率,此更改可能会影响以下力场属性:

  • Gravity
  • Rotation
  • Vector Fields

如果这些设置的行为与早期 Unity 版本不同,请调整它们的值。

返回顶部

对 UGUI Graphic 类的更改

UnityEngine.UI.Graphic 不再为 CanvasRenderer 组件提供 RequireComponent 属性。要更新用户编写的继承自 Graphic 的类并在 UGUI 画布中呈现,请添加以下 RequireComponent 属性:

using UnityEngine;

[RequireComponent(typeof (CanvasRenderer))]
public class exampleClass: Graphic
{
  ...
}

返回顶部

设置代码优化以继续使用代码覆盖率

代码优化的引入改变了代码覆盖率包的工作方式。要在 2020LTS 中继续对您的项目使用代码覆盖率包,请设置代码优化以在调试模式下编译脚本。调试模式启用 C# 调试并且需要该功能以获得准确的代码覆盖率结果。 为确保代码优化设置为调试模式,您可以执行以下操作之一:

  • 在编辑器中切换到调试模式(右下角,选择 Bug 图标 > Switch to debug mode)。
  • 使用 CompilationPipeline API,设置 CompilationPipeline.codeOptimization =CodeOptimization.Debug
  • -debugCodeOptimization 传递给命令行。

返回顶部

AR/VR Platforms Support

对于使用 Unity 2020 版本之前的 Unity 版本的现有 AR/VR 项目,本文档提供了有关升级这些项目的指南。

在 Project Settings 中启用 AR/VR

将现有项目升级到 Unity 2020 版本及更高版本时,应该会收到一个通知,指出已弃用的 XR 集成(以前在 Player/XR Settings 中)已禁用。

在资源导入期间,在启动 Unity 编辑器之前。
在资源导入期间,在启动 Unity 编辑器之前。

若要启用 AR/VR,请使用 Project Settings 中的 XR Plug-in Management 并选择目标平台。

注意:建议在安装 XR Plug-in Management 之前修复任何与升级相关的脚本错误。
注意:建议在安装 XR Plug-in Management 之前修复任何与升级相关的脚本错误。

虚拟现实

平台 构建目标 插件提供商
Oculus Quest Android Oculus
Oculus Rift 和 Rift S Desktop Oculus
Windows Mixed Reality VR UWP Windows Mixed Reality

增强现实

平台 构建目标 插件提供商
ARCore 设备 Android ARCore
ARKit 设备 iOS ARKit
HoloLens UWP Windows Mixed Reality
Magic Leap One Lumin Magic Leap

使用最佳播放器设置

确保项目的渲染和质量设置是最佳的。下表按目标平台详细介绍了推荐设置。

虚拟现实

平台 图形 API 立体渲染模式
Oculus Quest OpenGL ES 3.0 多视图
Oculus Rift 和 Rift S DX11 单通道实例化
Windows Mixed Reality VR DX11 单通道实例化

增强现实

平台 图形 API 立体渲染模式
ARCore 设备 OpenGL ES 3.0
ARKit 设备 Metal
HoloLens DX11 单通道实例化
Magic Leap One OpenGL ES 3.2 单通道实例化

注意:“单通道”不再是渲染模式选项,因为“单通道实例化”性能更好。如果要从“单通道”升级到“单通道实例化”,则可能需要更新项目中的自定义着色器。

渲染管线

内置渲染管线、通用渲染管线和高清渲染管线在 2020.1 中全部受支持。使用我们最新的可编程渲染管线有很多好处,但这不是此升级过程中的要求。

Note: If you are using third-party assets and/or custom shaders, you might need to update assets with shaders compatible with “single passed instanced”.

场景中的摄像机

如果使用 XR 交互工具包,则无需对摄像机跟踪进行更改。

If you are using a third-party toolkit for camera tracking (OVRCameraRig, etc), make sure you have updated to the latest version. Note that upgrading to latest versions of third-party tools might cause script errors, please reference third-party documentation.

如果使用跟踪姿势驱动程序进行摄像机跟踪,请参阅我们的迁移指南

Upgrading third-Party Toolkits

If you use any toolkits developed by our supported platforms (Oculus Integration package, MRTK, MLTK), make sure you’re using the latest version. Note that upgrading to the latest versions of third-party tools might cause upgrade-related script errors, and you may need to reference corresponding documentation of those toolkits.

常见问题解答

为什么我无法在 Project Settings 中安装 XR Plug-in Management?

You may have upgrade-related script errors that must be fixed before installing XR Plug-in Management.

为什么 XR Plug-in Management 中缺少 OpenVR 和 Google Cardboard?

OpenVR 和 Google Cardboard XR 插件分别由 Valve 和 Google 进行开发和维护。适用于这两个平台的安装说明链接可以在我们的文档中找到。

是否支持 Unity 输入系统?

是,我们支持的平台集成与 Unity 输入系统兼容。

是否支持通用渲染管线和高清渲染管线?

是,我们支持的平台集成与通用渲染管线和高清渲染管线兼容。

为什么我无法在 Package Manager 中查看 XR 交互工具包?

The XR Interaction Toolkit is still in preview. To view preview packages in 2020.1, you must enable it using the Package Manager tab in Project Settings. When enabled, preview packages are displayed in the Unity Registry of the Package Manager.

为什么 Play in Editor 不适用于我的提供程序?

Play in editor 支持仅适用于为其提供程序提供独立支持的提供程序。如果提供程序未在 XR Plug-in Management 提供程序选择 UI 的独立部分中列出,则 Play in Editor 将不适用。查看提供程序文档,因为它们可能支持其他一些集成 Play in Editor 支持的方法。

为什么我无法使用“单通道”渲染模式?

2020.1 不再支持“单通道”,因为“单通道实例化”性能最好。如果项目曾使用“单通道”渲染,则可能需要更新项目中的着色器。将自定义着色器用于“单通道”的第三方库可能也需要更新。可以选择从“单通道”升级到“多通道”,着色器应该可正常工作,但建议以“单通道实例化”为目标以获得最佳性能。

如何配置图形 API?

Graphics API is configured in Player settings (“Edit” > “Project Settings” > “Player”).

如何配置立体渲染模式?

渲染模式在 Project Settings 中 XR Plug-in Management 下嵌套的提供程序特定设置中进行配置。

为什么我在使用 XR 设置 API 时出现 renderScale 错误?

renderScale has been removed and replaced with eyeTextureResolutionScale but that has been a script updater task since 2019.3. If you are upgrading from a Unity version prior to 2019.3, you must manually replace renderScale with eyeTextureResolutionScale.

为什么 XR 交互工具包无法识别我控制器的输入(例如按钮按压)?

The headset needs to be detected before any device inputs can be detected. One common issue when testing, is that many people let their headsets rest on a table while debugging their interactions. The controllers aren’t recognized until you wear the headset (or the proximity sensor inside the headset gets activated). If you don’t get any input from your device, put on your headset after starting the app, or cover the proximity sensor.

我是否可以在 AR Foundation 应用程序中使用 iPhone 中的广角摄像机?

ARKit 未提供用于更改摄像机 FOV 的选项。

回到顶部

Upgrading to Unity 2021.1
升级到 Unity 2019 LTS