版本:Unity 6 (6000.0)
语言 : English
升级到 Unity 2023.1
升级到 Unity 2021 LTS

升级到 Unity 2022 LTS

此页面列出了 Unity 2022 LTS 版本中的更改,这些更改可能会在您将项目从 2021 版本升级到 2022 LTS 时影响现有项目。

注意:2022 LTS 也称为 2022.3.0。

页面大纲

Articulation Drive 的 forceLimit 属性现在接受力输入,而不是冲量

Articulation Drive 的 forceLimit 功能以前用作冲量限制,而不是力限制。 这使得力限制取决于 fixedDeltaTime 值。

如果您已经适应将此值用作冲量,那么在升级时,Articulation Body 组件中 Articulation Drive 中的 forceLimit 值将不正确,范围很大。

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

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

生成的 Lightmap UV 的更改

Unity 的 UV 生成过程已更改。 Lightmaps预渲染纹理,包含光源对场景中静态物体的效果。 Lightmaps 叠加在场景几何体上,以创建照明的效果。 更多信息
查看 词汇表
可能会在使用模型导入设置中的 生成 Lightmap UV 选项 的项目中出现损坏。 要解决此问题,请重新烘焙项目中的所有 Lightmaps。

此更改仅影响使用生成 Lightmap UV 的项目。

UI 工具包中 GradientField 的更改

从 Unity 2022.1 开始,GradientField 中的颜色选择器默认情况下不启用 HDR高动态范围
查看 词汇表
。 现在,使用 GradientField 的现有项目使用常规颜色选择器,而不是 HDR 颜色选择器。

要继续使用 HDR 颜色选择器,您可以使用 GradientField 中的 HDR 属性启用它。

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

以下字段现在可用,这些字段在运行时自动工作

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

项目中的 UXML 文件不会在升级时更新和工作。 但是,当您通过 UI(用户界面) 允许用户与您的应用程序交互。 Unity 目前支持三种 UI 系统。 更多信息
查看 词汇表
生成器添加新的提升类型时,它会破坏 UXML 资产与旧版 Unity 版本的向后兼容性。 要保持 UXML 资产的向后兼容性,您需要在 UXML 文件中使用旧类型 (UnityEditor.UIElements 命名空间)。

输入管理中的物理键选项默认情况下处于启用状态

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

从 2022.1 开始,此选项默认情况下处于启用状态,目的是在将来弃用和删除旧行为。

添加了对 BatchRendererGroup 的支持

BatchRendererGroup API 最初是为 MegaCity 演示而编写的,但如果没有大量实现细节,它就无法完全记录或使用。 此 API 已从头开始重写,并已完全记录和支持。

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

渲染管线

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

要将其他渲染管线升级到 2022.2 版本,请参阅您正在使用的渲染管线的文档

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

Enlighten 烘焙全局照明已弃用

默认情况下,不再提供 EnlightenGeomerics 的照明系统,用于 Unity 的 Enlighten 实时全局照明。 更多信息
查看 词汇表
烘焙 全局照明一组对直接照明和间接照明进行建模的技术,以提供逼真的照明效果。
查看 词汇表
光线映射后端。 当您将项目升级到此版本时,Unity 会从 光线映射器Unity 中的一个工具,根据场景中灯光和几何体的排列来烘焙光线映射。 更多信息
查看 词汇表
选择下拉列表中删除 Enlighten 烘焙后端,并在您已选择 Enlighten 烘焙后端的每个 场景场景包含游戏的环境和菜单。 将每个唯一的场景文件视为唯一的关卡。 在每个场景中,您放置环境、障碍物和装饰,本质上是在分段设计和构建游戏。 更多信息
查看 词汇表
中替换为渐进式光线映射器。

在 Apple 硅设备上,Unity 会将渐进式 GPU 光线映射器替换为 Enlighten 烘焙后端。 在所有其他设备上,Unity 会选择 CPU 渐进式光线映射器。

要继续使用 Enlighten 烘焙后端,请打开 Edit > Project Settings > Editor,并在该菜单的 Graphics 部分中激活 Enable Enlighten for Baked GI (Legacy)。 但是,此选项在 2023.1 及更高版本中不可用。

照明窗口中不可用最小反弹次数

照明窗口中不再提供 渐进式光线映射器 的最小反弹次数属性。

当您将项目升级到 2022.2 时,Unity 会将最小反弹次数值重置为 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
Tools 组件 已移除
NDK r23b
JDK (OpenJDK) 11.0.14.1+1
GradleAndroid 构建系统,它自动执行多个构建过程。 此自动化意味着许多常见的构建错误不太可能发生。 更多信息
查看 词汇表
7.2
Android Gradle 插件 7.1.2

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

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

导航和寻路正在从 Unity 核心转移到 AI 导航包

包文档位于此处:https://docs.unity3d.org.cn/Packages/com.unity.ai.navigation@latest

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

  • 继续使用您的项目,保持现状
  • 将您的项目转换为使用新包

无论哪种情况,AI 导航包都会自动安装并添加到您的项目中。

要开始使用新包,您需要按以下步骤转换项目

  1. 转到 Window > AI > NavMesh Updater
  2. NavMeshUnity 生成的网格,用于近似环境中的可行走区域和障碍物,以便进行寻路和 AI 控制的导航。 更多信息
    查看 词汇表
    更新器窗口中,选择要转换的数据类型。
  3. 单击 Initialize Converters 以检测并显示您选择的数据类型。
  4. 选择要转换的数据。
  5. 单击 Convert Assets 以完成转换。

作为转换过程的一部分,NavMesh Updater 会进行以下更改

  • 以前烘焙并嵌入场景中的任何 NavMesh 现在都引用了在名为 Navigation 的新 GameObjectUnity 场景中的基本对象,可以表示角色、道具、场景、相机、路点等。 GameObject 的功能由附加到它的组件定义。 更多信息
    查看 词汇表
    上创建的 NavMeshSurface 组件。
  • 任何标记为 Navigation Static 的对象现在都将具有具有相应设置的 NavMeshModifier 组件。

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

  1. 转到 **窗口 > AI > 导航**。
  2. 选择 **代理**。
  3. 创建新的条目并指定相关设置。

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

  • 将新创建的代理类型分配给为该场景创建的 **导航** 中的相应 NavMeshSurface,
  • 将代理类型分配给打算使用该 NavMesh 的 NavMeshAgents。

要查找用于每个现有 NavMesh 的设置,请在 项目窗口显示 Assets 文件夹内容的窗口(项目选项卡)更多信息
词汇表 中查看
中选择 NavMesh .asset 文件。NavMesh 设置将显示在 检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。 更多信息
词汇表 中查看
中。

如果您的项目使用由 脚本一段代码,允许您创建自己的组件,触发游戏事件,随时间修改组件属性,并以任何您喜欢的方式响应用户输入。 更多信息
词汇表 中查看
定义的 NavMeshSurfaceNavMeshModifierNavMeshModifierVolumeNavMeshLink 组件,这些脚本是从 Unity 的 NavMeshComponents GitHub 存储库 下载的,那么在将 **AI 导航** 包添加到您的项目之前,请删除这些脚本和任何关联文件。如果您没有删除这些脚本,您可能会在控制台中遇到与这些组件相关的冲突和错误。新组件与旧组件在您的项目中的行为相同,除了使用以下组件时:

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