版本: 2022.3
语言: 英语
升级到Unity 2021.1
升级到Unity 2019 LTS

升级到Unity 2020 LTS

注意:按照发布顺序遵循本节中的建议。例如,如果您需要将项目从2020升级到2022,请阅读2021升级指南,查看在阅读2022升级指南之前是否需要做出任何更改。

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

注意,2020 LTS也称为2020.3

页面摘要


所有网格顶点都进行变换以更好地解包UV

Unity可能会更改导入到项目中网格Unity的主要图形原语。网格构成了您3D世界中很大一部分。Unity支持三角形或四边形多边形网格。Nurbs、Nurms、Subdiv表面必须转换为多边形。更多信息
术语表中查看
UVs的3D对象一个3D GameObject,例如一个立方体、地形或ragdoll。更多信息
术语表中查看

Unity将所有导入的网格顶点的位置自动缩放到Unity单位在Unity项目中使用的大小单位。默认情况下,1 Unity单位是1米。要使用不同的比例,请在导入资源时设置导入设置中的缩放因子。
术语表中查看

从Unity 2020.1开始,如果启用了生成光照贴图UV一个预渲染的纹理,包含场景中静态对象上光源的效果。光照贴图叠加在场景几何形状之上以创建光照效果。更多信息
术语表中查看
,Unity将使用转换后的网格顶点生成光照贴图UV。在Unity 2020.1之前,Unity使用自动位置变换之前的原始导入的网格顶点位置生成光照贴图UV映射。

顶点变换后生成的UV更准确地反映了您导入的对象的原始形状和规模。返回顶部

所有资产包哈希值都不同,因此所有包都构建

从Unity 2020.1开始,Unity为项目中的所有资产包生成不同的哈希值。这确保了所有包都构建,包括具有相同内容但加载路径不同的包。返回顶部

在项目升级中,多人在线HLAPI包不会自动安装

从Unity 2020.1版本开始,如果升级的项目使用了需要安装多玩家HLAPI的脚本一段代码,可以让你创建自己的组件、触发游戏事件、按规定时间修改组件属性以及以任何你希望的方式对用户输入做出响应。更多信息
术语表中查看
,你需要在包管理器中安装多玩家HLAPI包。

从Unity 2019.1到2019.4版本,当你升级Unity 2018.4或更早版本创建的项目时,Unity会自动安装多玩家HLAPI包。返回顶部

使用逐步光映射器改进LOD烘焙

Unity的渐进式光烘焙器Unity中的一个工具,用于根据场景中灯光和几何形状的排列生成光照贴图。更多信息
术语表中查看
由CPU和GPU光烘焙器组成。

从Unity 2020.1版本开始,GPU光烘焙器支持细节级(LOD)烘焙

CPU光烘焙器使用相同的烘焙算法,这使得Unity可以利用所有可用的CPU核心,通过场景场景包含游戏的环境和菜单。每个独特的场景文件就像一个独特关卡。在场景中,放置你的环境、障碍和装饰,相当于将游戏分成多个部分设计和构建。更多信息
术语表中查看
和使用LOD细节级(LOD)技术是一种优化,当GameObject与摄像机的距离增加时,减少Unity需要渲染的游戏对象三角形的数量。更多信息
术语表中查看
值大于0来加快烘焙速度。

要升级场景中的LOD,清除已烘焙的光照贴图,然后重新生成。要完成此操作

  1. 在Unity编辑器中,打开窗口 > 渲染 > 灯光设置。
  2. 在“调试设置”中,选择“生成光照”按钮的下拉菜单,然后选择“清除已烘焙数据”。
  3. 选择“生成光照”。

返回顶部

自适应性性能破坏性更改

要更新自适应性能从1.0到2.0,请参阅自适应性能升级指南返回顶部

Xcode项目生成

MacOS独立Xcode项目的构建路径选择已更改。现在必须提供目标目录的路径,并将在目标目录内部创建.xcodeproj和相关文件。MacOS构建文件夹不能放在项目目录内部。有关Xcode项目结构的信息,请参阅手册页面。

返回顶部

粒子系统力场更改

为了确保力场属性的连续行为,Unity现在使用30fps作为模拟的参考帧率。如果你的应用程序使用不同的帧率,此更改可能会影响以下力场属性

  • 重力
  • 旋转
  • 矢量场

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

返回顶部

UGUI图形类更改

UnityEngine.UI.Graphic不再为RequireComponent属性添加了CanvasRenderer组件。要更新你的继承自Graphic并显示在UGUI画布中渲染的用户编写的类,请添加以下RequireComponent属性

using UnityEngine;

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

返回顶部

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

引入了代码优化功能,这改变了代码覆盖率包的工作方式。要在2020LTS版本中继续使用代码覆盖率包,请将代码优化设置成调试模式。调试模式支持C#调试,获取准确的代码覆盖率结果需要启用调试模式。
为确保代码优化设置为调试模式,可以执行以下操作之一:

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

返回顶部

AR/VR平台支持

本文档提供了如何将使用 unity 2020 之前版本的现有AR增强现实 更多信息
查看词汇/VR虚拟现实 更多信息
查看词汇项目升级到Unity 2020及以后版本的指南。

在项目设置中启用AR/VR。

当将现有项目升级到Unity 2020及以后版本时,您应收到一条通知,该通知表明之前在Player/XR设置中使用的弃用的XR包括虚拟现实(VR)、增强现实(AR)和混合现实(MR)应用的统称。支持这些互动应用形式的设备可以称为XR设备。 更多信息
查看词汇集成功能已被禁用。

During Asset import, before the Unity Editor is launched.
在资产导入时,在Unity编辑器启动之前。

要启用AR/VR,使用插件在Unity外创建的代码集合,为Unity创建功能。您可以在Unity中使用两种类型的插件:托管插件(使用Visual Studio等工具创建的.NET集合)和本地插件(特定平台的本机代码库)。 更多信息
查看词汇
管理,在项目设置一组广泛的设置,允许您配置项目的物理、音频、网络、图形、输入等多个方面如何表现。 更多信息
查看词汇
中选择目标平台。

Note: We recommend fixing any upgrade-related script errors before installing XR Plug-in Management.
注意:在安装XR插件管理之前,建议修复任何与升级相关的脚本错误。

虚拟现实

平台 构建目标 插件提供商
Oculus Quest Android Oculus
Oculus Rift & Rift S 桌面 Oculus
Windows 混合现实混合现实结合了它自己的虚拟环境与用户的真实环境,并允许它们相互作用。
查看词汇
VR
UWP WindowsMixed Reality

增强现实

平台 构建目标 插件提供商
ARCore设备 Android ARCore
ARKit设备 iOS ARKit
HoloLens UWP WindowsMixed 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 N/A
ARKit设备 Metal N/A
HoloLens DX11 单通行实例
Magic Leap One OpenGL ES 3.2 单通行实例

注意:“单次遍历”不再是一个渲染模式选项,因为“单次遍历实例化”性能更好。如果您是从“单次遍历”升级到“单次遍历实例化”,您可能需要更新项目中的自定义 着色器GPU上运行的一个程序。更多信息
术语表中查看

渲染管线

在2020.1中支持了内置的 渲染管线一系列操作,它将场景的内容显示在屏幕上。Unity允许您选择预构建的渲染管线,或编写自己的渲染管线。更多信息
术语表中查看
、通用渲染管线和高清晰度渲染管线。使用我们最新的脚本渲染管线有一些好处,但在升级过程中这不是必需的。

注意:如果您正在使用第三方资产和/或自定义着色器,您可能需要更新与“单次遍历实例化”兼容的着色器。

场景中的相机

如果您正在使用XR交互工具包,不需要对相机一个组件,用于在场景中创建特定视点的图像。输出结果可以是绘制到屏幕或捕获为纹理。更多信息
术语表中查看
跟踪进行任何更改。

如果您正在使用第三方相机跟踪工具包(例如 OVRCameraRig),请确保您已更新到最新版本。请注意,升级到第三方工具的最新版本可能会引起脚本错误,请参考第三方文档。

如果您正在使用跟踪姿态驱动器进行相机跟踪,请参阅我们的迁移指南

升级第三方工具包

如果您使用任何由我们支持的平台开发(Oculus集成包、MRTK、MLTK)的工具包,请确保您正在使用最新版本。请注意,升级到第三方工具的最新版本可能会引起与升级相关的脚本错误,您可能需要参考这些工具包的相关文档。

常见问题解答

为什么在项目设置中无法安装XR插件管理器?

您可能有与升级相关的脚本错误,必须在安装XR插件管理器之前修复。

为什么OpenVR和Google Cardboard在XR插件管理器中缺失?

OpenVR和Google Cardboard XR插件分别由Valve和Google开发和维护。您可以在我们的文档中找到两个平台的安装说明。

Unity输入系统受到支持吗?

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

通用渲染管线和高清晰度渲染管线受到支持吗?

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

为什么在包管理器中无法看到我的XR交互工具包?

XR交互工具包仍然处于预览阶段。要在2020.1中查看预览包,您必须使用项目设置中的包管理器选项卡启用它。启用后,预览包将显示在包管理器的Unity注册表中。

为什么我的提供者编辑器中的“播放”功能不起作用?

仅在具有独立支持其提供者的编辑器中播放功能仅适用于在XR插件管理器中的提供者选择独立部分的提供者。如果提供者未在独立部分列出,则“在编辑器中播放”功能将不起作用。请检查您的提供者文档,它们可能支持其他一些集成“在编辑器中播放”支持的方法。

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

由于“单通道实例化”具有最佳性能,“单通道”自2020.1起不再受支持。如果您的项目使用了“单通道”渲染,则可能需要更新您的项目中的着色器。使用自定义着色器进行“单通道”的第三方库也可能需要更新。您可以选择从“单通道”升级到“多通道”,着色器应该可以正常工作,但我们建议针对“单通道实例化”以获得最佳性能。

如何配置图形API?

图形API在玩家设置中配置(“编辑”>“项目设置”>“玩家”)。

如何配置立体渲染模式?

在项目设置中,在XR插件管理器下嵌套的提供者特定设置中配置渲染模式。

为什么我在使用XR设置API渲染Scale时遇到错误?

renderScale已被移除,并替换为eyeTextureResolutionScale,但这是从2019.3以来的脚本更新器任务。如果您是从早于2019.3的Unity版本升级,则必须手动将renderScale替换为eyeTextureResolutionScale。

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

在检测到任何设备输入之前,需要检测到头戴设备。在测试时,一个常见问题是许多人将他们的头戴设备放在桌面上进行交互的调试。控制器只有在您戴上头戴设备(或者头戴设备内的接近传感器被激活)时才能识别。如果您没有从您的设备收到任何输入,请在启动应用后戴上头戴设备,或者覆盖靠近传感器。

我可以在AR Foundation应用中使用iPhone的广角相机吗?

ARKit不提供更改相机视场角(FOV)的选项。

返回顶部

升级到Unity 2021.1
升级到Unity 2019 LTS