引入新的预制件工作流程

Unity 最需要增加的功能之一是预制件嵌套。但是我们知道,你们中的许多人需要对预制件工作流程进行更多的更改。因此,我们正在改进整个系统,重点关注可重用性、控制性和安全性。这是一系列博客文章中介绍即将发生的变化的第一篇。如果你在昨天的Unite Berlin主题演讲中还没有这样做,可以在此处获取使用新预制件系统的Unity预览版。
我们先回顾一下 Unity 中预制件的基础知识。从根本上说,预制件资源就像游戏对象及其子对象的模板。您可以使用预制件资源的实例在整个场景中创建游戏对象的许多副本。如果更改预制件资源,所有预制件实例都会相应地自动更新。
我们与众多独立工作室和 3A 级工作室进行了交谈,以深入了解你们目前如何使用预制件。我们发现的一个问题是,当需要编辑预制件资源时,必须将其拖放到层级视图的打开场景中才能修改,应用更改,然后记得再次删除。另一个大问题是 Inspector 中预制件实例的 Apply 按钮。使用此按钮,您可以不小心将更改应用到您无法很好获得概述的预制件资源。
为了解决这些问题,我们引入了一系列新功能。我们实现了向后兼容的预制件后端,现在支持嵌套和继承。我们改进了预制件实例的属性和对象覆盖的可视化,并增加了在多个粒度级别上应用覆盖的功能:每个属性、每个组件/游戏对象,或者像以前一样,应用整个预制件实例。最后,我们还添加了预制件模式,以便可以单独编辑预制件资源。
预制件模式是使用预制件时发生的根本变化。它可让您决定是分层更改预制件还是直接更改预制件资源。
预制件模式可让您更受控地编辑预制件资源会话级别/会话次数,因为您可以对预制件资源执行所有更改(包括结构更改),而不会收到要求您断开与预制件连接的对话框。在预制件模式下,您不再需要为了稍后将这些更改应用到资源而临时更改预制件分层(应用本应作为覆盖保留的其他以前的覆盖可能会产生副作用)。因此,我们建议您对预制件资源更改使用预制件模式,并且仅在需要时对预制件实例进行覆盖。请注意,我们还大大改进了 Apply 工作流程。有关此工作流程的更多信息,请参阅即将发表的博客文章!
预制件模式接管层级视图和场景视图,以单独显示预制件资源。您可以通过层级视图和场景视图中的新标头识别此模式。另请注意,可以在“首选项”中自定义“预制件模式”的背景颜色。

您可以通过执行以下操作之一进入预制件模式:
- 双击Project窗口中的预制件。
- 单击“层级视图”窗口中预制件根 GameObject 旁边的新箭头按钮。
- 单击“Inspector”中的“Open”按钮,查找预制件资源或预制件分层的根 GameObject。
要启用预制件嵌套,我们必须对预制件后端进行技术更改。因此,从技术上讲,预制件现在是导入的素材资源。这意味着您不能再在“Project”窗口中编辑预制件游戏对象。与直接在Project窗口中进行编辑的旧工作流程相比,预制件模式可让您编辑任意深度的对象,并在Scene视图中查看您正在执行的操作。
提供预制件嵌套的另一个后果是,您无法再断开预制件分层以对该分层进行结构更改。这包括删除游戏对象、重定游戏对象的父级或使用 RectTransform 替换变换,反之亦然。现在,您可以在预制件模式下执行所有操作。或者,如果您希望完全删除预制件分层,从而按照自己的意愿重新构建生成的普通游戏对象。
我们在Editor中引入了“stage”这个术语,作为与其他游戏对象分离的一组游戏对象的概念。在预制件模式下,场景视图顶部的面包屑分别代表不同的阶段。每个阶段都像是一个单独的“世界”。默认情况下,我们有主阶段,它是所有场景所在的阶段(您已加载并在层级视图中可以看到的场景)。在预制件模式下打开预制件时,我们为预制件的内容创建一个预制件阶段。我们不会在打开预制件阶段时卸载主阶段游戏对象,这意味着您仍然可以在游戏视图中看到它们。
Scene 视图和 Hierarchy 始终显示当前阶段,即最右侧面包屑对应的阶段。要使用场景返回主阶段,请单击场景视图面包屑中的“场景”按钮或层级视图中的“返回”箭头按钮。
要查看实际的新工作流程,请查看下面的视频:
如果您想看到改进后的预制件工作流程的实际效果,我们强烈建议您立即在 YouTube 或 Twitch 上观看 Unite Berlin 的直播。从柏林时间下午 5 点开始,您可以通过 Ciro Continisio 了解改进预制件工作流程。之后,Rune Skovbo Johansen和Steen Lund将在新预制件系统技术深入学习(下午6点)中帮助您更好地了解我们实施决策的利弊。我们会在稍后编辑讨论,并在会后一个月内将其上传到我们的 YouTube 频道。