您想找什么?
Hero background image
Unity 2019.3 release

面向程序员的新功能和更新

了解Unity 2019.3为开发人员提供的新内容,包括对DOTS的重大更新、改进的版本控制、可配置的进入游戏模式、序列化改进、物理更新等。

更新内容

以下是针对程序员工具的主要更新的概述。有关完整详情,请参阅发行说明。

DOTS游戏代码更新

使用新版本的DOTS包减少样板代码的编写量。使用简单的[GenerateAuthoringComponent]属性替换自定义创作组件,使用更简洁但一点也不慢的Entities.ForEach()(现在使用Burst编译器和C#作业系统)替换那些冗长的IJobForEach和IJobForEachWithEntity构造。

要开始以新方式编写DOTS代码,请从Package Manager安装实体包(预览版)。

序列化改进

新的SerializeReference属性让您能够将C#类序列化为引用而不是值类型。这意味着您可以让POCO(普通旧式C#对象)相互引用,从而简化表达和管理复杂数据结构(例如图和树)的代码。

此外,它还支持字段包含多态数据。例如,List<IAnimal>类型的列表可以包含狗(class Dog :IAnimal{})和猫(类猫:IAnimal{})。

现在,标记为序列化为引用的字段可以从根本上表达null值。以前,序列化null字段将始终使用该类型的默认构造函数对其进行反序列化。

以前,非Unity类型的序列化将忽略多态。在Unity 2019.3中,多态序列化允许您维护以前无法完成序列化过程的对象引用,并更正确地引用继承链。

通过可配置的进入游戏模式加快迭代速度
通过可配置的进入游戏模式加快迭代速度

当前,在Editor中进入游戏模式时,Unity将执行两个操作:重置脚本状态(域重新加载)和重新加载场景。这需要一些时间,当您的项目变得更为复杂时,Unity Editor进入游戏模式的速度可能会变慢。因此,我们在Project Settings > Editor > Enter Play Mode options中引入了可配置的进入游戏模式(实验性功能)。

这些选项允许您在没有代码更改时从“进入游戏模式”进程禁用域和/或场景重新加载。根据我们的测试结果,更改这些设置可以节省50-90%的迭代时间(具体取决于您的项目)。

有关在禁用域重新加载后如何正确修改脚本的更多详细信息,请参阅文档中的如何配置游戏模式。

如果您想在进入游戏模式前重置游戏状态,还可以通过API和回调来访问该功能。

目前,该功能处于实验阶段,我们期待在论坛上听到您的反馈。

PhysX库从v3.4升级到v4.1
PhysX库从v3.4升级到v4.1

我们将PhysX库从v3.4升级到了v4.1。这包括新的Temporal Gauss-Seidel解算器,可使关节对过度拉伸有更强的抗性,并避免以前在模拟过程中看到的某些不稳定行为。要启用新的解算器,请转到Project Settings > Physics

我们还公开了新的粗筛阶段自动框修剪算法,该算法可自动计算世界边界和细分数量。这是对现有多框修剪算法的升级。

此外,桌面平台还提供了更快的网格中间阶段算法。它不需要构建资源密集型加速结构(R树),这对于运行时生成的内容很有用,因为它将减少MeshCollider的实例化时间。

此外,我们还添加了一个新的API,以允许对MeshCollider的网格延迟烘焙。您可以将计算密集型网格烘焙过程隐藏在加载屏幕或过渡场景(例如冒险游戏中的对话场景)中。该API是线程安全的,因此您可以从主线程(包括通过C#作业系统)调用该函数,以同时烘焙多个网格。

有关更多信息,请参阅NVIDIA的PhysX 4.1 SDK指南中的“从PhysX SDK 3.4迁移到4.0”。

刻画器改进:可配置的帧数
刻画器改进:可配置的帧数

在2019.3之前,通过“Profiler”窗口调查性能时,您一次可以查看300帧的分析数据。有时,这无法给您足够的时间捕获您真正关心的帧。

可配置的帧数让您可以扩展该捕获窗口。现在,您可以在“Preferences”窗口中配置需要“Profiler”窗口显示的帧数(300-2000)。

刻画器改进:播放器中的深度配置文件支持
刻画器改进:播放器中的深度配置文件支持
刻画器改进:Player中的托管分配调用堆栈支持
刻画器改进:Player中的托管分配调用堆栈支持

托管分配跟踪和分析是Unity性能分析器的一项重要功能。
连续的托管分配会引发垃圾回收(GC)操作,导致多帧延迟,影响游戏的流畅度。在使用Unity开发游戏时,了解分配的发生时间以及它们在代码中的起源是必不可少的信息。

在2019.3中,我们在Player中引入了托管分配的调用堆栈。这让您可以在对Player进行性能分析时查看导致GC分配的C#函数。

可以使用“Call Stacks”开关启用该选项。

版本控制改进

Unity 2019.3还包括对版本控制支持的大幅修改。

这包括许多UX和集成方面的改进以及针对Perforce集成的修复,例如在丢失Perforce连接后自动尝试重新连接。

现在,版本控制栏位于“Inspector”窗口顶部,让您能够执行其他操作(例如添加、锁定、解锁和提交),并且包含其他改进。

此外,在非签出资源的“Inspector”中,现在您可以通过单击右键来复制禁用的Inspector字段的值。

有关所有UI改进和修复的更多详细信息,请查看发行说明。

可寻址
可寻址

该版本包括新的Addressable Asset System(即Addressables),它让您可以轻松地通过“地址”加载资源,同时通过简化内容包创建和部署来处理资源管理开销。简而言之,Addressables使您的团队能够有效地管理复杂的实时内容。

Netcode
Netcode

DOTS示例中使用的FPS网络代码是建立在DOTS之上的,可轻松创建具有类似架构的网络游戏。它包括客户端预测、授权服务器、插值和滞后补偿。

通过Tim Johansson的Unite演讲了解FPS网络代码。

立即下载 Unity 2019.3
立即下载 Unity 2019.3

立即使用所有上述功能以及更多。