Unity 2017.3 来了

2017.3 完成了 2017 周期,引入了多个新功能和改进,适用于艺术家和开发者。
我们很高兴与您分享今天 Unity 2017.3 提供的所有优秀新功能和改进。不过,在深入细节之前,我们想回顾一下 Unity 2017。(如果您等不及,可以直接跳到下面的新增内容部分。)
在新的 Unity 2017 周期中,我们加倍努力帮助 艺术家,设计师 和开发者更高效地创建和协作。强大的视觉工具,如 时间轴,Cinemachine 和 Unity FBX 导出器,让艺术家能够做更多的事情。
我们继续改善图形质量和运行时性能,帮助您在最新的前沿平台(桌面、控制台、移动、VR、AR、智能电视)上保持领先,并利用最新的 GPU 和本机图形 API。一个很好的例子是获奖的 Adam 演示电影系列。
其他功能,如 更新的 2D 工具 和 Unity Teams,帮助您更快地获得更好的结果。最后,我们为您提供了使用强大数据的新方法(在广告、IAP 和实时运营分析解决方案中),以实时优化游戏性能并最大化您的收入。
Unity 2017.1、2017.2 和 2017.3 提供了许多支持这些目标的关键功能。以下是总结回顾:

我们也很高兴分享一些已发布或正在进行的 Unity 2017.x 制作:
Oats Studios / ADAM:镜子与第三集
Spiraloid / Nanite Fulcrum
KO_OP / GNOG
Baobab Studio / Asteroid!
EpicHouse Studios / Phased
Cybernetic Walrus / Antigraviator
Rebel Twin / Dragons Hill 2
慢兄弟 / 哈罗德·哈利布特
在我们 / 我们的生活中
认真 / 最佳小虫
莫诺米公园 / 冒 slime 农场
Videogyan / TooToo Boy
最后,在跳到 2017.3 细节之前,请查看这个关于 Unity 2017.x 标题和一些新改进功能的精彩视频:
随着这一年的结束,我们很高兴地宣布,Unity 2017.3,2017 年周期的最终版本,现在可用。2017.3 引入了许多新功能和改进,适用于艺术家和开发者,我们特别兴奋地分享我们改进的工具集,用于创建互动 360 视频体验。
我们以大量新功能的变更日志强势结束 2017 年,包括以下亮点:
全景 360/180 视频
我们特别高兴为您带来全景 360/180 和 2D/3D 视频工作流程的改进。您现在可以轻松地在 Unity 中导入各种风格的 2D 或 3D 视频,并在天空盒上播放,以创建针对独立、移动和 XR 运行时的 360 视频体验。
粒子系统改进
改进包括新的无光和表面粒子着色器以及带状粒子轨迹。这些允许粒子根据其年龄连接。由于这些带状轨迹上的每个点都由一个粒子表示,因此它们可以被动画化,例如,通过与噪声模块结合使用。
脚本编译 - 用户定义的托管程序集
您将能够根据文件夹中的脚本定义自己的托管程序集。通过将项目的脚本拆分为多个程序集,可以大大减少大型项目中编辑器的脚本编译时间。
管理的内存分析器支持
您现在可以利用 Mono/.NET 2.0 支持所需的 API 来获取托管内存快照。这使得可以直接在编辑器内部获取内存快照。
更新的 Crunch 库
Crunch 库现在可以将 DXT 纹理压缩速度提高至 2.5 倍,同时提供约 10% 更好的压缩比。但更重要的是,更新后的库现在能够压缩 ETC_RGB4 和 ETC2_RGBA8 纹理,这使得可以在 iOS 和 Android 设备上使用 Crunch 压缩。
图形改进
现在在 PC、Xbox One 和 PlayStation 4 上支持 HDR 压缩光照贴图 (BC6H)。我们还进行了多项 GPU 实例化改进,并且我们正在将动态分辨率作为引擎功能首次在 Xbox One 平台上推出,其他平台将随后跟进。
光照改进
我们引入了渐进光照计算器的光照模式(烘焙间接光、阴影掩码和减法),支持 LOD,实时探针提供更直观的工作流程,以及为烘焙光照贴图提供 HDR 编码支持,以提高视觉质量。
VR 设备信息
为了帮助您优化 VR 体验,您现在可以捕获 VR 设备的刷新率、尺寸、宽高比、HMD 跟踪和控制器跟踪,作为设备信息和设备状态事件的一部分。
物理
改进包括布料自碰撞和相互碰撞技术以及改进的约束绘制。
动画
我们引入了可播放调度,这允许您在实际播放之前预取数据。第一次实现影响 AudioClipPlayables,但在未来,调度将被其他资产使用:音频、视频和时间线。我们添加了对动画整数和枚举组件属性的支持。我们还在动画预览窗口中引入了一个新的 "2D" 模式按钮。 最后,现在可以在 Animator 窗口中 缩放、框选和自动适应!
Xbox One X 支持
我们为微软的新Xbox One X控制台添加了支持。使用质量设置启用对4K HDR渲染的支持,或以其他方式利用额外的性能,例如提高帧率或增加图形保真度。Xbox One X支持在所有2017.x版本的Unity中可用。
小米:通过编辑器轻松将Android应用发布到中国(小米)
2016年11月,Unity和小米宣布建立合作关系,帮助开发者将游戏带给小米在中国的2亿客户,这是该地区最大的Android商店。自那时起,一些早期采用者的游戏已在小米的商店上线。在11月底,针对小米全新门户的推送到商店服务正式上线!要开始,请查看本网站上的常见问题解答和入门指南。
标准事件
标准事件现在正式脱离测试版,您可以直接从2017.3的Unity编辑器访问它。我们还引入了漏斗模板,结合标准事件,允许您创建常见的漏斗,只需几次点击即可揭示关键见解。
Unity自动定义脚本如何编译为托管程序集。通常,在Unity编辑器中进行迭代脚本更改时,编译时间会随着您向项目中添加更多脚本而增加。
现在,您可以使用程序集定义文件根据文件夹中的脚本定义自己的托管程序集。将项目脚本分离到多个具有明确定义依赖关系的程序集确保在您更改脚本时,仅重建所需的程序集。这减少了编译时间,特别适用于大型项目。
每个托管程序集可以被视为Unity项目中的一个单独库。

上图说明了如何将项目脚本拆分为多个程序集。因为只有 Main.dll 中的脚本被更改,其他程序集没有重新编译。由于 Main.dll 包含更少的脚本,它的编译速度比 Assembly-CSharp.dll 更快。
同样,仅在 Stuff.dll 中的脚本更改会导致 Main.dll 和 Stuff.dll 重新编译。
您可以在我们的 功能预览博客文章 中阅读有关如何使用程序集定义文件的更多信息。
在 2015 年,我们发布了一个实验性的托管内存分析器,支持 IL2CPP。内存分析器最初是一个 Unity Hackweek 项目,后来作为开源项目在 BitBucket 上发布。请查看 Bitbucket 上的 内存分析器项目页面 以获取详细信息和演示视频。
我们为内存分析器所需的 API 添加了 Mono/.NET 2.0 支持,以便进行托管内存快照。这使得在编辑器中进行内存快照成为可能。

变换工具是一个多功能工具,包含标准三种工具的功能:移动、旋转和缩放工具。变换工具并不是为了替代这三种标准工具,而是为了在您希望同时使用这三种工具而不必在它们之间切换的情况下提供一个工具。
世界小工具
将枢轴旋转设置为“全局”模式时,您可以沿全局轴平移和旋转 GameObject。
本地小工具
当枢轴旋转处于“本地”模式时,您还可以沿本地轴进行缩放。
屏幕空间小工具
如果您按住“SHIFT”键,小工具将进入屏幕空间模式。
在此模式下,您可以在屏幕空间中进行平移和旋转。
对齐
当您按住“CTRL”(Windows)或“Command”(OSX)键时,单位对齐功能被激活:
- 轴平移
- 平面平移
- 轴旋转
- 轴缩放
- 全局缩放
顶点对齐
当您按住“V”键时,工具进入顶点对齐模式。
这使您能够平移游戏对象,使其一个顶点放置在另一个对象的顶点上。
Cinemachine,我们的游戏内摄像机、电影、过场动画、电影预可视化和虚拟摄影的摄像机系统,还包括许多新功能和改进。
改进包括:
- 对后处理堆栈 v2 的支持 测试版
- 新的碰撞器实现,用巧妙的摄像机重新定位算法替代了路缘感应器,保持摄像机高度或与目标的距离
- 新的构图变换器,通过移动摄像机而不旋转它来尊重构图和构图规则
- 新的 Cinemachine MixingCamera,可以从时间线或游戏逻辑驱动最多 8 个虚拟摄像机的连续混合。您可以使用它创建具有自定义混合的复杂设备,并将其公开为普通的虚拟摄像机。
其他新功能和改进包括滑轨摄像机行为和视角,第一人称射击类型,瞄准组件等等。
要查看所有功能和改进的完整列表,请查看我们的官方论坛帖子。
Cinemachine功能集通过资产商店分发。 将最新版本下载到您的项目中。
照明模式支持
在Unity中,可以通过将各种模式分配给光源(实时、混合和烘焙)来控制照明预计算和合成,以实现特定效果。使用混合模式显著减少实时阴影距离,提高性能。在远距离阴影支持的情况下,也可以实现更高的视觉保真度,并且支持实时高光。
在Unity 2017.3中,您可以使用渐进光照贴图执行相同的操作,从以下照明模式中选择:
在烘焙间接光模式下,混合光源表现得像实时动态光源,并从烘焙光照贴图和光探针中采样额外的间接光。像雾这样的效果可以在实时阴影距离之外使用,在那里阴影本来会缺失。
在阴影掩模模式下,混合光源是实时的,来自静态物体的阴影被烘焙到阴影掩模纹理和光探针中。这使您能够在远处渲染阴影,显著减少基于质量设置中的阴影掩模模式的渲染阴影投射器的数量。
在减法模式下,直接光被烘焙到光照贴图中,静态物体不会从混合光源中获得高光或光泽高光。动态物体将在实时中被照亮,并通过光探针接收来自静态物体的预计算阴影。主方向光允许动态物体在静态物体上投射减法实时阴影。
要在渐进光照贴图中尝试照明模式,请确保您的场景中有一个混合光源,然后在照明窗口中选择一个照明模式。
我们增加了为细节层次(LOD)对象生成照明的能力,使用实时光探针以及烘焙光照贴图,为用户提供了更直观的照明创作工作流程。LOD允许您在相机远离时使用较低复杂度的网格,而在相机靠近时使用较高复杂度的网格。这样可以减少渲染远处物体时的计算量。当您在具有烘焙光照和实时全局光照的场景中使用Unity的LOD系统时,该系统会将LOD组中最详细的模型照亮,就像它是一个常规的静态模型。它使用光照贴图进行直接和间接光照,并为实时全局光照使用单独的光照贴图。
然而,对于LOD组中的较低LOD,您只能将烘焙光照贴图与来自光探针或光探针代理体积的实时全局光照结合使用,您必须将其放置在LOD组周围。
要允许烘焙系统在2017.3中生成实时或烘焙光照贴图,只需确保相关GameObject的Renderer组件中启用了光照贴图静态。
此动画展示了实时环境颜色如何影响较低级别LOD使用的实时全局光照:
我们已在PC、Xbox One和PlayStation 4上添加了对HDR压缩光照贴图(BC6H)的支持,以实现更好的视觉质量。使用高质量光照贴图的优点在于,它们不使用RGBM编码光照贴图值,而是使用16位浮点值。因此,支持的范围从0到65504。BC6H格式也优于DXT5 + RGBM组合,因为它不会产生与RGBM编码相关的条带伪影和来自DXT压缩的颜色伪影。需要采样HDR光照贴图的着色器的ALU指令数较少,因为不需要解码采样值,并且BC6H格式的GPU内存要求与DXT5相同。
通过在播放器设置中将光照贴图编码选项设置为高质量,可以轻松启用HDR。

选择高质量将启用HDR光照贴图支持,而普通质量将切换到RGBM编码。
当在光照窗口中启用光照贴图压缩时,光照贴图将使用BC6H压缩格式进行压缩。
GPU实例化在5.6中引入,以通过同时渲染相同网格的多个副本来减少每个场景使用的绘制调用数量,从而显著提高渲染性能。
GPU实例化有许多改进,包括每实例属性现在打包到一个结构数据类型中,具有仅包含一个此类结构数组的实例常量缓冲区。
对于大多数平台,实例化数组大小现在自动计算,不再需要用户指定(最大允许常量缓冲区大小/上述结构类型的大小)。因此,OpenGL和Metal上的实例化批处理大小得到了改善,实例化着色器变体的编译速度更快,并且在CPU-GPU数据带宽方面的成本可能更低。
在Unity 2017.3中引入的更新Crunch库可以将DXT纹理压缩速度提高至2.5倍,并提高10%的压缩比。更重要的是,更新后的库现在能够压缩ETC_RGB4和ETC2_RGBA8纹理,这使得在iOS和Android设备上使用Crunch压缩成为可能。
Crunch是一种有损纹理压缩格式,通常用于DXT纹理压缩之上。Crunch压缩有助于减少纹理的大小,以便使用更少的磁盘空间并加快下载速度。由Richard Geldreich开发的原始Crunch压缩库可在GitHub上获得。Crunch纹理格式的支持首次在Unity 5.3中添加,在Unity 2017.3中,我们现在引入了更新版本的Crunch压缩库。
使用Crunch压缩的纹理首先被解压缩为DXT,然后在运行时上传到GPU。压缩的纹理不仅占用更少的空间,而且解压缩速度也非常快。这使得Crunch格式在分发纹理时非常高效。与此同时,压缩的纹理可能需要相当长的时间来压缩,这在使用Crunch时是一个主要缺点(对于大型项目,将所有纹理压缩为Crunch格式可能需要几个小时在Unity编辑器中完成)。
这应该有助于您减少移动游戏的构建大小,从而更容易遵守App Store的无线大小限制,最终让您能够将内容传播给更广泛的受众。
要在Android、iOS和tvOS平台上使用Crunch压缩,您只需在检查器窗口中选择“RGB Crunched ETC”或“RGBA Crunched ETC2”格式的纹理。如果您在默认选项卡中启用“使用Crunch压缩”选项,则Android平台上的所有纹理将默认使用ETC Crunch进行压缩。

下面您可以看到使用默认质量设置压缩的纹理示例。请注意,最终纹理上的伪影是由Crunch压缩和所选的GPU纹理格式(DXT或ETC)共同引入的。
原始图像
24位/像素
DXT
4位/像素
压缩的DXT
1.24 位/像素
原始图像
24位/像素
ETC
4位/像素
压缩 ETC
1.33 位/像素
如果您想了解有关更新的 Crunch 纹理压缩库的更多信息,请访问 此博客文章,其中包含更多大小和性能比较的示例。
顾名思义,动态分辨率是指动态缩放某些或所有渲染目标,以减少 GPU 的工作负载。当性能数据表明游戏即将因 GPU 限制而掉帧时,可以自动触发动态分辨率。在这种情况下,逐渐降低分辨率可以帮助保持稳定的帧率。如果用户即将经历特别占用 GPU 的游戏部分,也可以手动触发。如果逐渐缩放,动态分辨率几乎是不可察觉的。

等距矩形 2D 视频
立方体贴图 2D 视频的宽高比应为 1:6、3:4、4:3 或 6:1,具体取决于面布局:

立方体贴图 2D 视频
要在 Unity 编辑器中使用全景视频功能,您必须能够访问全景视频剪辑,或知道如何创作它们。查看我们的 文档页面,获取有关如何在 Unity 编辑器中显示任何全景视频的逐步指南。
请注意,许多桌面硬件视频解码器的分辨率限制为4K,而移动硬件视频解码器通常限制为2K或更低,这会影响这些平台上实时播放的分辨率。
新开发者预览版引入的技术改进包括Android NDK的C API、暂停和恢复AR会话的功能,允许用户在应用恢复后暂停和继续跟踪、提高运行时效率,最后,在锚点、平面查找和点云之间改进可跟踪和锚点接口。了解更多关于ARCore开发者预览版的信息。
通过对Vuforia 7的Unity 2017.3支持,您可以构建跨平台的AR应用。Vuforia 7引入了模型目标,这是一种使用现有3D模型在特定对象上放置数字内容的新方法。Vuforia Ground Plane也是新的功能,允许您在地面或桌子等水平表面上放置数字内容。Ground Plane将支持越来越多的iOS和Android设备,利用可用的ARKit等平台支持。了解更多关于Unity 2017中的Vuforia的信息。
Ground Plane (免费提供)在地面或桌子上放置数字内容。模型目标。根据几何形状识别新类别的对象,例如用于在工业设备、车辆或家用电器上放置AR内容。
我们很高兴欢迎OTOY的路径追踪GPU加速渲染引擎进入Unity编辑器。OctaneRender for Unity免费提供,或以20美元或60美元的价格购买解锁更多GPU和领先3D创作工具的OctaneRender插件的套餐。OctaneRender诞生于GPU,是一种无偏见的渲染引擎,以物理级精度追踪场景中的每一束光线,以提供无与伦比的CG和VFX真实感。Octane Render for Unity与Unity 2017.1及以上版本兼容。了解更多关于OctaneRender for Unity的信息。

生命周期速度模块现在包含一个新曲线,允许在粒子生命周期内控制粒子速度。这使得可以在不影响粒子移动方向的情况下改变粒子速度。它还支持负速度,这对于创建重力/漩涡效果非常有用。

我们发布了表面和无光照着色器供粒子使用。它们提供了您所期望的所有核心粒子功能,通过与我们现有的标准着色器类似的接口。现在可以轻松配置混合模式、透明度测试阈值、软粒子距离以及更多功能。还内置了对混合翻转书和扭曲效果的支持。表面着色器还使支持法线贴图和PBR照明变得简单。

轨迹模块中有一个新选项称为带状模式,它允许根据粒子的年龄连接粒子,从而避免每个粒子留下轨迹。因为轨迹上的每个点由一个粒子表示,所以可以使用此模式创建动画轨迹,例如,通过与噪声模块结合使用。

在形状模块中使用网格时,现在可以使用原始类型为线或线条的网格。这使得沿着线生成粒子变得简单,而不仅仅是在网格的表面上。
Unity在Unity 2017.3中添加了对32位网格的支持,最终取消了网格必须具有65,536个或更少顶点的限制。此支持已完全集成到粒子系统中,这意味着您可以在这些新的大型网格的表面上生成粒子。尽管可能会有高性能成本,但您现在也可以使用32位索引渲染粒子网格。
我们还对编辑器进行了一些改进,以改善您在创作效果时的工作流程:
- 调试复选框已从检查器移动到场景视图叠加层,以使其更易于访问(重新模拟和显示边界)。
- 场景视图叠加层中有一个新的下拉菜单,名为“模拟层”,您可以使用它来预览所有循环效果,而不仅仅是选定的效果。使用层遮罩来决定预览哪些效果。
- 场景视图FX下拉菜单中有一个新的选项,用于渲染粒子系统。这使您可以显示/隐藏粒子系统,以便清理场景视图。

布料物理有许多改进,包括更好的编辑器工具,用于创建布料,并暴露更多PhysX内部信息。这为碰撞、自碰撞等提供了更多选项。
您现在可以使用基于画笔的方法在布料上绘制约束并进行更新。您还可以启用相互碰撞,使不同的布料对象发生碰撞。
您可以在这里找到有关如何开始使用布料改进的更多信息。
现在支持Facebook的新分段上传功能,用于游戏室。之前,单个文件的最大大小约为250MB,上传到Facebook。现在,仅上传已更改的部分(分为10MB的段)。
自Unity 5.6以来,Unity一直支持Facebook的游戏桌面应用程序Game Room。支持Windows本地客户端使玩家能够体验为该平台专门构建的网页游戏和本地游戏。了解更多关于如何在Facebook上接触到20亿用户的信息。

Oculus Dash深度支持
随着Oculus在其最新的Rift更新中推出新的Oculus Dash菜单和UI,我们已包含Oculus Dash深度支持并暴露相机深度信息,以便Oculus Dash可以部分遮挡世界空间叠加层。
VR中的地形树
我们增加了在VR体验中使用Unity地形树的可能性。 查看文档以获取有关用树木填充您的世界的详细信息。
PSVR的立体实例化
在2017.2中,我们提供了针对VR PC平台的立体实例化;,现在我们正在扩展到PSVR。立体实例化是一项令人兴奋的渲染进展,它解锁了渲染立体图像的硬件优化。这意味着开发人员将能够在保持流畅帧率的同时做更多事情。
为了集中我们的精力于最新版本的DirectX,Unity 2017.3(包括Unity编辑器和独立播放器)将不再支持DirectX 9(该版本最初于2002年发布)。您可以在我们的博客上阅读更多关于如何继续支持Windows XP的信息。
最后,正如2017年10月最初宣布的那样,Unity将不再在2017.3版本中包含Samsung Tizen和SmartTV。然而,Unity仍然提供12个月的支持,包括从2017.2发布(2017年10月12日)开始的补丁和安全更新。要获取有关Unity的Tizen和SmartTV的最新信息,请访问三星的合作伙伴页面或直接联系三星,邮箱为support@samsungdevelopers.com。
Unity Teams功能现在可以购买,因此各个规模的团队可以轻松保存、共享和同步他们在Unity中的项目。Unity Teams Basic是免费的,非常适合刚刚起步的小团队。Unity Teams Advanced提供更多功能和容量,起价为每月9美元。您可以添加更多团队成员、云存储或更多自动构建,仅为您所需的付费。详情请见unity3d.com/teams。
如果您一直在使用Unity Teams功能(协作、云构建),您可以在2018年1月9日之前升级到付费订阅,以防止服务中断。此外,现在是升级到Plus和Pro的好时机。
Unity Analytics 标准事件 帮助跟踪用户行为并 回答与您的游戏相关的关键问题。它们是一组策划的事件,专注于用户体验的五个不同领域:入门、应用程序、进展、用户参与和变现。在2017.3版本中,标准事件现在直接集成到Unity中。
随着此版本的发布,我们很高兴向您介绍漏斗模板。

与标准事件一起,漏斗模板允许您创建常见的漏斗,只需几次点击即可揭示关键见解。
了解更多关于标准事件的信息。
对于Plus和Pro用户,LiveStream现在显示过去30分钟内的即时指标。当验证后,IAP收入会被显示,使收入报告更准确。在活动视图中,还有过滤新下载量、会话和验证的IAP收入的选项。
一如既往,请参考发行说明以获取新功能、改进和修复的完整列表。
