Version: Unity 6.0 (6000.0)
语言 : 中文
升级到 Unity 2023.1
升级到 Unity 2021 LTS

升级到 Unity 2022 LTS

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

注意:2022 LTS 也称为 2022.3.0.

页面大纲

现在,Articulation Drive forceLimit 属性接受力输入而非脉冲

Articulation Drive forceLimit 功能以前用作脉冲限制而非力限制。这使得力限制取决于 fixedDeltaTime 值。

如果您已经习惯将此值用作脉冲,则在升级时,Articulation Body 组件中 Articulation Drive 中 forceLimit 的值将非常不正确。

打开旧项目时会进行检查。升级项目时,Unity 会自动将相关值除以 Time.fixedDeltaTime ProjectSettings** > 时间 (Time) 页面中设置的 **,以避免不正确的配置。这样可以捕获根据项目设置的时间值模拟机器人的大多数情况。

如果使用脚本中的自定义时间值来模拟机器人,则需要手动校正这些值。

已生成光照贴图 UV 的更改

Unity 的 UV 生成程序已更改。在使用模型导入设置中的生成光照贴图 UV 选项的项目中,光照贴图可能看起来已损坏。要解决此问题,请重新烘焙项目中的所有光照贴图。

此更改仅影响使用“生成光照贴图 UV”的项目。

UI 工具包中 GradientField 的更改

从 Unity 2022.1 开始,GradientField 中的拾色器默认未启用__ HDR__高动态范围
See in Glossary
。现在,使用 GradientField 的现有项目使用的是常规拾色器而非 HDR 拾色器。

要继续使用 HDR 拾色器,可使用 GradientField 中的 HDR 属性启用它。

UI 工具包数字和复合字段在运行时可用

现在,以下字段可在运行时自动工作:

  • DoubleField
  • FloatField
  • IntegerField
  • LongField
  • Hash128Field
  • RectField
  • RectIntField
  • Vector2Field
  • Vector3Field
  • Vector4Field
  • Vector2IntField
  • Vector3IntField
  • BoundsField
  • BoundsIntField

项目中的 UXML 文件不会更新,在升级时会正常工作。但是,通过__ UI__(即用户界面,User Interface)让用户能够与您的应用程序进行交互。Unity 目前支持三种 UI 系统。更多信息
See in Glossary
构建器添加新的升级类型时,会破坏 UXML 资源与 Unity 旧版本的向后兼容性。要使 UXML 资源向后兼容,需要在 UXML 文件中使用旧类型(UnityEditor.UIElements 命名空间)。

默认启用 Input Managed 中的物理键选项

物理键选项允许您将键代码映射到物理键盘布局,而不是映射到语言特定布局(可能因不同地区的用户而异)。例如,在某些键盘上,第一行字母为“QWERTY”,在其他键盘上,第一行字母为“AZERTY”。这意味着,如果您编写了特定控件的脚本以使用众所周知的“WASD”键进行移动,则这些键在 AZERTY 布局键盘上不会处于正确的物理排列(如箭头键排列)。启用物理键后,无论用户的实际布局如何,Unity 都会使用通用 ANSI/ISO“Qwerty”布局来表示键的物理位置。这意味着,如果指定“Q”键,它将始终是第一行字母键上最左边的字母,即使用户的键盘该位置是不同的字母。

从 2022.1 版开始,默认启用此选项,旨在将来弃用和删除旧行为。

添加了对 BatchRendererGroup 的支持

BatchRendererGroup API 最初是为 MegaCity 演示编写的,但从未完整记录或使用,没有很多实施细节。此 API 已从头开始重写,并予以完整的记录和支持。

有关如何使用新接口的信息,请参阅 BatchRendererGroup 页面。

渲染管线

本升级指南介绍如何升级到 Unity 2022.2 版内置渲染管线。

要升级到 2022.2 版的其他渲染管线,请参阅所使用渲染管线的文档:

要升级其他包,请参阅所使用包的文档。

Enlighten 烘焙全局光照已弃用

默认情况下,Enlighten Baked Global Illumination 光照贴图后端不再可用。将项目升级到此版本时,Unity 会从光照贴图选择下拉列表中删除__ Enlighten__Geomerics 出品的光照系统,在 Unity 中用于 Enlighten 实时全局光照。更多信息
See in Glossary
烘焙后端,并在已选择 Enlighten 烘焙后端的每个场景中替换渐进式光照贴图。

在 Apple 芯片设备上,Unity 用渐进式 GPU 光照贴图代替 Enlighten 烘焙后端。在所有其他设备上,Unity 选择 CPU 渐进式光照贴图。

要继续使用 Enlighten 烘焙后端,请打开编辑 (Edit) ** > 项目设置 (Project Settings)** > 编辑器 (Editor),然后在该菜单的图形 (Graphics) 部分中激活为 Baked GI 启用 Enlighten(旧版) (Enable Enlighten for Baked GI (Legacy))。但是,此选项在 2023.1 及更高版本中不可用。

Minimum Bounces 在光照窗口中不可用

渐进式光照贴图的 Minimum Bounces 属性在光照窗口中不再可用。

将项目升级到 2022.2 时,Unity 会将 Minimum Bounces 值重置为 2,即光照贴图的建议最小反弹次数。要更改此值,请编辑 LightingSettings API 属性 minBounces

Unity 的默认 Gradle 模板已更改

在 2022.2 版中,Unity 更新了 Android 使用的所有工具的默认版本。新版本如下:

| 工具 | 版本 | | |:———|:——–|:-| | SDK | | | | | Cmdline-tools 组件 | 版本 6.0 | | | Build-tools 组件版本 | 32.0.0 | | | Platform-tools 组件 | 32.0.0 | | | 平台(API 级别) | 默认添加了 31 和 32 | | | 工具组件 | 已移除 | | NDK | r23b | | | JDK (OpenJDK) | 11.0.14.1+1 | | | Gradle | 7.2 | | | Android__ Gradle__一套 Android 构建系统,可自动执行多种构建过程。这种自动化意味着能减少许多常见的构建错误。更多信息
See in Glossary
插件 | 7.1.2 | |

Gradle 7.2 版本的更新更改了一些 build.gradle 文件配置选项。这需要对 Unity 的默认 gradle 模板进行重大更改。Unity 不会尝试升级自定义 Gradle 模板来匹配新格式,这意味着包含自定义模板文件的项目可能无法构建。要解决此问题,请根据新的默认模板文件重新创建任何自定义模板文件。

有关 build.gradle 配置选项更改的信息,请参阅 Android Gradle 插件发行说明

导航和寻路将从 Unity 核心移到 AI Navigation 包

包文档位于以下位置:https://docs.unity3d.com/Packages/com.unity.ai.navigation@latest

如果您的项目是使用以前版本的 Unity 引擎中的导航功能创建的,则可以执行以下其中一项操作:

  • 继续按原样使用项目
  • 转换项目以使用新包

在这两种情况下,都会自动安装 AI Navigation 包并将其添加到项目中。

要开始使用新包,需要按如下方式转换项目:

  1. 前往窗口 (Window) > AI > 导航网格更新程序 (NavMesh Updater)
  2. 在导航网格更新程序 (NavMesh Updater) 窗口中,选择要转换的数据类型。
  3. 单击初始化转换器 (Initialize Converters) 可检测和显示所选的数据类型。
  4. 选择要转换的数据。
  5. 单击转换资源 (Convert Assets) 可完成转换。

在转换过程中,导航网格更新程序 (NavMesh Updater) 会进行以下更改:

  • 现在,以前烘焙并嵌入到场景中的任何导航网格都将从名为 Navigation 的新__ GameObject__Unity 场景中的基础对象,可以表示角色、道具、风景、摄像机、路径点等。GameObject 的功能由所附的组件决定。更多信息
    See in Glossary
    上创建的 NavMeshSurface 组件引用。
  • 现在,以前标记为 Navigation Static 的任何对象都将有具有相应设置的 NavMeshModifier 组件。

如果不同场景中的导航网格使用不同的代理设置进行烘焙,则需要创建新的代理类型来匹配这些设置。要创建代理类型,请执行以下操作:

  1. 前往窗口 (Window) > AI > 导航 (Navigation)
  2. 选择代理 (Agents)
  3. 创建新条目并指定相关设置。

创建新条目后,需要执行以下操作:

  • 在为该场景创建的导航中,将新建的代理类型分配给各自的 NavMeshSurfaces。
  • 将代理类型分配给要使用该导航网格的 NavMeshAgent。

要查找用于每个现有导航网格的设置,请在项目窗口中选择 NavMesh .asset 文件。导航网格设置显示在检视视图中。

如果您的项目使用从 Unity 的 NavMeshComponents GitHub 代码仓库下载的脚本定义的 NavMeshSurfaceNavMeshModifierNavMeshModifierVolumeNavMeshLink 组件,请在将 AI 导航包添加到项目之前删除这些脚本及任何关联文件。如果不删除这些脚本,控制台中可能会出现与这些组件相关的冲突和错误。新组件与旧组件在项目中的行为相同,但使用以下组件时除外:

  • NavMeshSurface 组件现在包含一个选项,仅使用在烘焙过程中有 NavMeshModifier 的对象。
  • 现在可以指定是否将 NavMeshModifier 组件应用于层级视图中的子对象。
升级到 Unity 2023.1
升级到 Unity 2021 LTS