最新版Unity 5.6正式发布,也是Unity 5.x系列的最后一个版本。其中包括改进的2D功能,更好的图形性能,新的视频播放器,Progressive Lightmapper预览版,新的光照模式,以及对Facebook Gameroom和Google DayDream平台的支持。
两年前在GDC 2015上我们发布了Unity 5,今天发布的5.6正式为Unity 5.x画上句号。 我们希望您的项目将受益于5.6所包含的许多功能和改进。
现有用户 点此获取Unity 5.6 ,新Unity用户, 点击这里!
5.6亮点简述
照明方面的大量改进
5.6包括Progressive Lightmapper预览版,与当前的Enlighten解决方案相比,在你尝试不同的照明场景时可以提供即时反馈,并且迭代速度更快。 5.6还提供光照模式(Light Modes),为静态和动态对象提供各种实时和烘焙照明的混合方式。
改进的图形和GPU支持的功能
GPU Instancing可以以非常低的成本实现由许多同类对象构成的新类型特效,而Compute Shader可以将一些计算任务转移到GPU上。 而且,通过Apple Metal图形API,您设备上运行的游戏将可以直接利用芯片的原生性能来实现更多细节。
支持Vulkan
Vulkan在让渲染速度提高的同时,减少了驱动程序开销和CPU工作负载,这使得CPU可以更好地进行额外的计算或渲染,并增加了移动平台的电池寿命。
粒子系统大幅更新
5.6大大扩展了粒子效果的范围,为用户提供了更多的选择和控制。 此更新还显著提高了粒子系统的性能。
新的视频播放器
支持在所有平台上回放4K视频以及360度全景视频。
导航系统改进
改进的AI和Pathfinding工具(也称为NavMesh系统)可以操纵多个导航网格和代理。 而且,用于程序生成或动态加载内容的新工具可以为角色导航提供一系列全新的用例集和游戏选项。
新的2D工具和改进
Unity 5.6添加了一整套2D功能,可以为开发人员提供更多的控制,更容易创建复杂的2D对象。 新的2D物理相关的功能可以实现新的游戏玩法和效果,包括与2D对象交互的粒子效果。
TextMesh Pro
Unity资源商店中最出色的工具之一,现在可免费提供给5.3以上的用户,并将很快被原生集成到Unity中。 TextMesh Pro是具有动态视觉文字样式的高级文本渲染,同时大大提高了对文本格式和布局的控制。
性能报告和调试改进
除了异常报告之外,性能报告现在还会收集iOS的本机崩溃信息。 物理调试可视化和分析器改进使定位游戏中性能问题的源头更加容易。
新平台
无缝发布到FB Gameroom,以及Google Daydream,以及发布Cardboard应用到Android和iOS平台。
Unity Collaborate多人协作(测试版):
我们为发布更改添加了新的选项,以便更好地控制您的协作项目。
实验性支持WebAssembly
Unity 5.6加入了对WebAssembly的实验性支持,一种改善Unity WebGL应用体验的新型跨浏览器技术。
5.6新功能
Progressive Lightmapper(预览)
5.6最值得注意的功能之一是基于路径追踪的新解决方案Progressive Lightmapper。 它使烘焙照明可以快速迭代,并可以预测大概结束时间。 在5.6中,它将作为一个预览功能发布。
当我们推出Unity 5.0时,Enlighten取代Beast提供烘焙和实时全局照明(GI)。 然而,Enlighten不适用于烘焙照明的所有用例,因此需要Progressive Lightmapper提供解决方案。
我们希望提供一个解决方案,不仅可以为烘焙灯光带来很好的效果,还可为照明艺术家提供改进的工作流程,包括快速,可预测的迭代功能。
在以前发布的Unity版本中,对场景的更改需要重新做烘焙,并且只有烘焙完成后才能显示结果。 在5.0中, Enlighten允许我们把使用预计算获得的实时GI作为预览。
Enlighten在烘焙方面提供的功能是能够在过渡期间使用预计算的实时GI实时改变灯光并立即看到结果。 然而,对某些参数,材质或几何形状的修改仍然需要进行重新烘焙,在此期间您不会得到任何反馈,同时材质反照率和发光度却可以像灯光一样进行变动。
例如,当在烘焙的阴影或者光线反弹级别上进行迭代时,我们需要等待几分钟甚至更长时间才能看到变化,这很让人沮丧。这大大限制了您可以通过烘焙照明实现的质量。 使用Progressive Lightmapper,您几乎可以得到即时的反馈。 虽然一开始在场景渲染图上会看到很多噪点,但是图像质量很快就会得到改进。
新灯光模式替换混合模式照明
灯光模式正在取代混合模式照明,这使得烘焙照明可以与实时照明相融合,包括烘焙和实时阴影。 我们提供多种预设,以涵盖广泛的场景,包括完全实时GI照明,部分烘焙照明和完全烘焙的照明。 我们添加了烘焙阴影遮罩的能力,提供“超越实时阴影距离”的阴影。 这大大减少了实时阴影距离,提高了性能。对远距离阴影与实时镜面高光的支持可以实现更高的视觉逼真度。已经为每个灯光类型和渲染路径添加了实时阴影淡出,并且从实时阴影转换到阴影遮罩是无缝的。
混合灯光模式:
我们还重新设计了照明窗口以增强可用性,并添加了一个新的Light Explorer窗口,以简化照明艺术家的工作。
支持Vulkan - 将图形性能提升到一个新的水平,并增加了移动设备的电池寿命
Vulkan是新一代的图形和计算API,可在台式机和移动平台上提供高效、跨平台的现代GPU功能。
它通过多线程并行来充分利用多个CPU内核,在使速度提高的同时,减少了驱动程序开销和CPU工作负载;,使CPU可以更好地进行额外的计算或渲染。 总而言之,我们已经看到Unity的渲染性能提升了30-60%,而无需处理Vulkan API的任何细节。
Vulkan的另一个优点是比使用OpenGL ES渲染相同内容的功耗更低。 Vulkan消耗的平均电量是OpenGL ES的88-90%,因此可以增加“10-12%的额外播放时间”,如下图所示,您可以看到相对于OpenGL ES的功耗。
Unity 5.6在Android,Windows和Linux平台上添加了Vulkan支持。我们还增加了Vulkan对OpenVR的初步支持。
TextMesh Pro即将集成到Unity,免费使用
GDC 2017上我们宣布TextMesh Pro是Unity资源商店中表现最好的工具之一。
TextMesh Pro可以替代Unity现有的文本组件,例如Text Mesh和UI Text。 TextMesh Pro使用签名距离字段(SDF)作为其主要的文本渲染管线,使得可以以任何点大小和分辨率清晰地渲染文本。 使用一组利用SDF文本渲染功能的自定义着色器,TextMesh Pro可以通过简单地更改材质属性来动态地更改文本的视觉外观。 添加视觉风格,如扩张,轮廓,柔和阴影,斜面,纹理,发光等,并通过创建/使用材质预设来保存并调用这些视觉风格。
TextMesh Pro提供对文本布局和格式设置的改进控制,使用户可以控制字符,字,行和段落间距,支持字距和基本连字,以及附加文本对齐模式,如对齐和刷新文本。 超过30个富文本标签 可用于让用户控制边距,缩进,用户可自定义 样式 , 链接 ,甚至 支持使用多个字体和图形与文本 混合。
我们已经开始着手将TextMesh Pro的功能集成到Unity 2017中,并将定期更新功能和兼容性来继续支持该资源,确保为TextMesh Pro用户提供无缝体验。
在此之前,您可以从Asset Store下载新的 免费版TextMesh Pro (需要Unity 5.3或更高版本)。
图形改进:实例化
Unity 5.6还包括对图形各方面的大量改进,包括粒子系统和GPU Instancing。
在5.4和5.5中引入的GPU Instancing允许您在单个绘制调用中使用实例着色器绘制相同网格的许多实例,同时仍允许每个实例拥有各自的数据集,包括位置,旋转和颜色。 当CPU是限制您的帧率的因素时,实例化可以提供显著的性能优势。 要启用标准着色器实例化,请勾选材质设置上的“Enable Instancing”复选框。 或者,您可以手动为您自己的着色器添加实例化支持。
在5.6中,我们现在支持Procedural Instancing,其中实例数据由着色器中的自定义源提供,而不是来自Material Property Block。我们也支持DrawMeshInstancedIndirect,它的 绘制参数由ComputeBuffer提供。 这种通过脚本渲染实例的新方法几乎没有CPU开销。所以,如果CPU是限制您游戏帧率的因素,那么您游戏的性能会得到显著提升。
查看 我们的文档 ,了解如何使用GPU Instancing。
改进粒子系统
在Unity 5.5中,我们可以为粒子添加自定义数据,这些数据可以从脚本和着色器访问。 在5.6中,我们扩展了这个系统,您现在可以在Inspector中直接配置数据,从而可以很容易地创建曲线和颜色应用在脚本和着色器中以驱动自定义逻辑。 更进一步,本模块中定义的颜色还可以使用高动态范围。在这之前,粒子系统是无法使用高动态范围数据的。
我们还允许并行处理多个粒子系统,以改进工作流程。
锥形,圆形和单面边缘形状现在有新的参数,用于控制粒子的生成。 以前,所有的粒子都是在表面上或体积内随机产生的。 现在,粒子可以顺序生成,也可以按期望的增量生成。
现在可以为爆发发射指定重复计数和间隔。 以前,每个爆发只能被触发一次,并且最多只能爆发四次。 使用新的系统,您将获得最多八个爆发,并且每个可重复任意次数。
最后,独立播放器中的粒子实例化速度现在已经快了两倍多!
我们添加了一个基于物理的渲染材质验证器,可以验证Albedo和Specular值是在可接受的范围之内。 Albedo值也可以根据用户定义的亮度范围进行验证。
为Metal添加Compute Shader支持
Unity 5.6为iOS和MacOS添加了对Metal Compute Shader的支持。计算着色器由HLSL编写,就如Unity中的其他图形API一样,它们最终都会转换为Metal Shading Language(目前仅限于Metal v1.1)。如果您希望使用UAV重用现有的常规着色器,请务必使用pragma target 4.5而不是5.0。 我们还为编辑器添加了使用Metal渲染后端的实验性支持。
新的后期处理栈
新的后处理栈已发布,支持Unity 5.6及5.5。您可以从Asset Store免费获取 新的Post Processing Stack插件包 。
它将一套完整的图像效果组合到一个后期流程中。这种做法的优点是:
它具有以下效果:
- Antialiasing(抗锯齿,FXAA、Temporal AA)
- Ambient Occlusion(环境光遮蔽)
- Screen Space Reflections(屏幕空间反射)
- Fog(烟雾)
- Depth of Field(景深)
- Motion Blur(运动模糊)
- Eye Adaptation(眼适应)
- Bloom(虚化)
- Color Grading(颜色分级)
- User Lut(摄影表)
- Chromatic Aberration(色差)
- Grain(粒度)
- Vignette(晕影)
- Dithering(抖动)
该工具还包括一组监视器和调试视图,以帮助您正确设置效果并调试输出中的问题。
具有4k视频播放能力的新视频播放器
Unity 5.6包含一个全新的视频播放器,全新架构平切添加了硬件加速。 即使是普通的手持设备,现在也可以播放支持Alpha通道的高分辨率4K视频。 它旨在使用编辑器和目标平台的视频硬件功能。 它支持目前被广泛使用的H.264 / AAC编解码器,在无法使用H.264 / AAC的情况下则会使用VP8 / Vorbis。 将来我们还会添加对其他编解码器的支持。
新的视频播放器就是一个组件,用于播放您在场景中的电影,提供沉浸式的互动视频体验,高品质的硬件加速性能以及360度视频播放的支持。您可以观看 Unite 2016 Keynote视频 来了解它的工作原理。
NavMesh:改进的寻路和AI
在Unity 5.6中,我们引入了底层API,旨在解决以前版本的限制。 这些改进为角色和AI导航提供了一整套新的用例和游戏选项。 此外,底层API还提供四种新的易于使用的组件,这些组件 已在Github开源 。
能将Unity的NavMesh功能应用到动态生成或动态加载的内容上是开发者呼声最高的功能。 利用5.6中的新功能,这不仅成为可能,而且简单高效。 只需加载或生成场景,然后让NavMesh进行烘焙即可。
NavMesh现在是基于组件的,而不是只应用于整个场景中。 这个新架构允许每个场景拥有多个NavMesh。 此外,我们现在可以有不同的代理类型。 这允许您轻松调整不同角色的半径,高度和移动设置。
通过添加NavMeshSurface组件,我们的NavMesh可以与游戏对象而不是世界轴对齐。 这意味着我们可以将我们的导航网格定向到我们在3D空间中所需的任何方向。 对于想要使用我们的导航工具开发2D游戏或者想要把导航系统与Y轴分离的开发者而言,这是一个很大的改进。
因为现在NavMesh烘焙是通过组件来进行,它不再被限制在某个场景中。 这意味着我们可以选择哪些元素成为烘焙的一部分,或者我们可以选择烘焙特定的体积。 如果你曾经因为关卡过大无法使用NavMesh,那么您现在可以只生成您所需要的NavMesh。 这样在回放过程中可以节省大量烘焙时间和内存开销。 使用这种方法,只有那些已经改变的区域才需要重新烘焙。此外,因为它是多线程的,它的效率非常高。
新功能改进了2D游戏开发工作流程
我们一直在努力提供更多的2D支持,并且很高兴地在5.6中宣布几个新的2D功能。
排序组组件提供了在同一排序层上将其他对象分开渲染一组对象的功能。 它确保作为排序组的子项的所有渲染器都被排序在一起,从而有助于管理复杂场景。
通过将Transparency Sort Mode设置到自定义坐标轴,新的Axis Distance Sort可解决Z轴排序问题。
Outline Editor是Sprite Editor窗口的新增功能。 它可以用于自动生成可选择的细分级别,或者手动编辑精灵的网格形状。 您还可以通过选择网格与实际图像的接近程度来控制细分质量。
我们为SpriteRenderer引入了9-Slice Sprite,这是一种2D技术,它允许您在不需要准备游戏中的多个资源的情况下重复使用具有可变维度的图像。 它类似于UI中使用的9-Slice。 这允许您在尺寸变化时拉伸或重复图像的定义区域,提供创建平台或背景的快速技术,同时仍使用少量纹理内存。
最后我们还添加了EncodeToEXR功能,这样可以允许您将任何HDR纹理的内容保存为一个磁盘上的EXR文件。类似于为处理非HDR纹理设计的EncodeToPNG和EncodeToJPG。
2D物理改进和功能
对于2D物理引擎,内部2D碰撞处理系统已经被完全重写,可提供更强大和可靠的碰撞测试,确保在所有条件下都能正确的获得Enter,Stay和Exit回调状态。
在2D物理引擎API的众多改进之中,几个特性脱颖而出:
5.6版本中的另一个新组件是CompositeCollider2D,它允许您将BoxCollider2D和PolygonCollider2D(更多对碰撞体的支持即将到来)合并到单个组合的Collider2D中,并使用多边形或轮廓(边缘)生成最终的碰撞体。 除了提供由多个独立的Collider2D形成的单个连续表面,当许多单独的Collider2D合并到单个复合材质中时,该解决方案也可以显著加快场景加载。 CompositeCollider2D具有您所期待的任何Collider2D的所有功能:它可以具有材质,触发器,由提供给effector使用,并附加到Rigidbody2D上等。
使用新的 EdgeRadius 功能,您可以在BoxCollider2D或EdgeCollider2D上配置半径,允许扩展边缘和顶点曲率。
作为API改进的一部分,还有一个新的Distance功能,可以让您查询两个Collider2D或Rigidbody2D的最近距离或重叠(穿透)。 使用此功能,可以解决Collider2D或Rigidbody2D上的所有重叠。 当与Kinematic Rigidbody2D一起使用时,可以获得完全自定义的解决方案。
最后,2D Colliders的粒子碰撞码也使用新的SIMD库完全重写,以提供快速的碰撞抑制,从而显著提高性能(大约10倍)。 另外,我们添加了一个新的2DCollider 重叠解析器,从而可以更快更准确地从重叠中脱离出来。
为iOS平台添加Unity Performance Reporting支持
Unity性能报告会自动在设备和平台之间收集应用程序错误,因此您和您的团队更容易实时查找和解决问题。 Unity 5.6的性能报告现在能捕获并报告iOS游戏记录的崩溃,将来会支持更多平台(下一步是Android !)。 您不需要在项目中添加任何代码来使用性能报告,只需打开“Services”窗口中的“Performance Reporting”即可开始使用。
可视化调试物理
有时可能难以判断场景中的哪些对象应该或者不应该碰撞,特别是当渲染和碰撞网格不同步时。 为了帮助您快速检查场景中的碰撞几何体,我们添加了物理碰撞的调试视图模式。 它旨在为我们提供一个在Unity场景中快速找到与碰撞相对应的碰撞体。 它也可以作为一个分析工具,因为它可以隐藏所有不被使用的Rigidbodies,以及显示所有凹面网格的MeshColliders
物理引擎的反穿透方法和改进的编辑器UI
我们添加了两个新的方法:Physics.ComputePenetration和Physics.ClosestPoint,以帮助编写自定义的反穿透方法。 这对创建自定义角色控制器以及需要额外控制如何对周围的碰撞体做出反馈的游戏代码很有帮助。
目前场景中有一个正在移动的球体和一个静止不动的胶囊。球体在与胶囊重叠的情况下,沿着胶囊转动。 在球体中心有一条红色的光线,显示球体需要翻转的方向和距离,以便与胶囊完全分离。
我们还统一了在场景视图中编辑原始2D和3D Colliders的交互式手柄。 他们现在都使用相同的逻辑并支持新的修改键(Shift和Alt),使编辑碰撞体的尺寸,将中心固定到位,或者从任何方向均匀地缩放形状变得容易。
我们添加了TreeView IMGUI控件,可以显示展开和折叠的分层数据。 您可以使用TreeView为编辑器窗口创建高度可定制的列表视图和多列表,可以与其他IMGUI控件和组件一起使用。 您可以自定义行内容渲染,拖动逻辑,选择逻辑,搜索,排序和重命名项目。
具有MultiColumnHeader和SearchField的TreeView示例
为了帮助您开始使用API函数,请访问我们的 Unity Scripting API文档 或TreeView手册。
我们改进了为每个UI元素发送到GPU的数据量,向Canvas添加了一个新的“AdditionalShaderProperties”。 这会更改创建的所有新Canvas组件的默认行为,并减少渲染画布的内存成本,因为排除了其他未使用的通道。
如果您正在使用 Visual Studio 2017 ,您会注意到,现在可以自动检测带有Unity工作负载的安装,并显示并添加到“外部脚本编辑器”列表中。
Google Daydream&Cardboard VR支持
5.6原生支持iOS和Android版本的Google Cardboard VR,和支持Android上Google Daydream VR平台 。 为了从Daydream平台获得最佳性能和延迟,我们与Google VR NDK集成,以利用该平台的异步重放和VR性能模式。
与Google I/O发布的Google VR SDK for Unity中的Daydream支持相比,我们现在提供了一个更简化的工作流程,进行了显著的优化和减少了延迟。 无需添加任何预制体,脚本或修改manifest文件即可开始使用 - 只需启用VR并将Daydream添加为目标平台,就可以开始制作自己的虚拟世界。
我们还可以轻松地切换和退出VR模式,以便您的应用程序可以轻松扩展到完整的Google VR受众群体,并原生支持Google Cardboard。 针对Cardboard的应用程序可以在较老的设备上运行,这样您就可以接触到尽可能多的用户。目前,Cardboard的支持是专门针对Android的,iOS Cardboard支持即将推出。
如果您有兴趣了解有关Google Daydream with Unity的更多信息,请参阅 Unite 2016 Daydream演讲 。
支持Nintendo Switch
任天堂Switch既可以像主机一样玩,也可以用来当掌机玩的特点,为游戏开发者创造了一个非常好的机会来重新思考如何设计游戏。已经有好几款使用Unity开发的Switch游戏例如《Super Bomberman》与《Snipperclips》在GDC 2017的Unity展台上率先发布。我们很高兴地向大家宣布Unity已经正式支持任天堂Switch的开发(目前该版本基于Unity 5.5,Unity 5.6.x也即将支持)。
支持Facebook Gameroom
通过Gameroom,Facebook为开发人员提供了一种更轻松的方法,将高质量的游戏带入PC,并且让游戏可以充分利用PC的CPU和GPU的能力。您现在可以把您的项目作为原生Windows应用发布到Facebook Gameroom,或者使用 Unity的WebGL支持 发布到 Facebook.com 。
从把内容分享给您的Facebook好友到处理内购 – 甚至从Unity编辑器直接把内容发布到Facebook,这一切全都被整合在了Unity里面。
WebAssembly的实验性支持
在5.6中,我们为WebAssembly提供了实验性支持,WebAssembly是一种新的跨浏览器技术,旨在帮助改进Unity WebGL体验。 尽管从技术上将其定义为一种新的独立的标准,但从我们的角度来看,WebAssembly本质上是 asm.js JavaScript子集的字节码格式(asm.js用于将Unity代码部署到WebGL)。与当前使用的基于文本的表示相比,字节码格式显著地减少了编译为asm.js代码的大小。 这将使代码下载更快,更重要的是,能够更快地解析和编译代码,使用更少的内存。 这将改善大型已编译JavaScript代码库的启动时间,并减少其内存需求 - 这两个都是开发者在WebGL平台面临的常见问题。
改进Unity Multiplayer多人联网
5.6包含对现有Unity Multiplayer功能的优化和稳定性的改进。 值得注意的是,在不太可靠的网络条件下运行时,我们已经提高了稳定性。 大多数更改是透明的,不会影响已有游戏所用的网络API的实现。
除了与编辑器相关的修改之外,我们还对Multiplayer文档进行了改进,制作了一些新的学习材质,并开始了新功能的基础工作。 有关的信息,请查看 这篇文章 ,其中提供了Unity Multiplayer,当前和未来状态的更新。
Unity Collaborate多人协作新功能(测试版)
Unity Collaborate多人协作 可让团队轻松保存、共享和同步其Unity项目。 它很容易使用,所以整个团队可以为项目做贡献,无论他在哪里或担任什么职位。它比传统版本控制(例如Git,SVN)更简单,所以您的团队可以花更多的时间在重要的事情上面 – 制作您的游戏!
基于早期测试版的客户反馈,我们在5.6中添加了一些最需要的功能,包括 部分发布 ,可让用户发布所选文件。 以前,您必须一次发布所有更改过的文件。
通过 忽略文件 ,您可以忽略项目中不想推送到项目的文件和目录,而新的“ 回滚 ”功能可以让项目返回最后一次保存的状态; 特别有助于撤销不必要的更改!
Unity 5.6宣告Unity 5.x周期结束,Unity 2017有什么新功能?
查看 这篇文章 了解关于Unity 2017开启Unity版本号命名新时代,与Unity 5.x产品周期截止。
两年前在GDC 2015上我们发布了Unity 5,今天发布的5.6正式为Unity 5.x画上句号。 我们希望您的项目将受益于5.6所包含的许多功能和改进。
现有用户 点此获取Unity 5.6 ,新Unity用户, 点击这里!
5.6亮点简述
照明方面的大量改进
5.6包括Progressive Lightmapper预览版,与当前的Enlighten解决方案相比,在你尝试不同的照明场景时可以提供即时反馈,并且迭代速度更快。 5.6还提供光照模式(Light Modes),为静态和动态对象提供各种实时和烘焙照明的混合方式。
改进的图形和GPU支持的功能
GPU Instancing可以以非常低的成本实现由许多同类对象构成的新类型特效,而Compute Shader可以将一些计算任务转移到GPU上。 而且,通过Apple Metal图形API,您设备上运行的游戏将可以直接利用芯片的原生性能来实现更多细节。
支持Vulkan
Vulkan在让渲染速度提高的同时,减少了驱动程序开销和CPU工作负载,这使得CPU可以更好地进行额外的计算或渲染,并增加了移动平台的电池寿命。
粒子系统大幅更新
5.6大大扩展了粒子效果的范围,为用户提供了更多的选择和控制。 此更新还显著提高了粒子系统的性能。
新的视频播放器
支持在所有平台上回放4K视频以及360度全景视频。
导航系统改进
改进的AI和Pathfinding工具(也称为NavMesh系统)可以操纵多个导航网格和代理。 而且,用于程序生成或动态加载内容的新工具可以为角色导航提供一系列全新的用例集和游戏选项。
新的2D工具和改进
Unity 5.6添加了一整套2D功能,可以为开发人员提供更多的控制,更容易创建复杂的2D对象。 新的2D物理相关的功能可以实现新的游戏玩法和效果,包括与2D对象交互的粒子效果。
TextMesh Pro
Unity资源商店中最出色的工具之一,现在可免费提供给5.3以上的用户,并将很快被原生集成到Unity中。 TextMesh Pro是具有动态视觉文字样式的高级文本渲染,同时大大提高了对文本格式和布局的控制。
性能报告和调试改进
除了异常报告之外,性能报告现在还会收集iOS的本机崩溃信息。 物理调试可视化和分析器改进使定位游戏中性能问题的源头更加容易。
新平台
无缝发布到FB Gameroom,以及Google Daydream,以及发布Cardboard应用到Android和iOS平台。
Unity Collaborate多人协作(测试版):
我们为发布更改添加了新的选项,以便更好地控制您的协作项目。
实验性支持WebAssembly
Unity 5.6加入了对WebAssembly的实验性支持,一种改善Unity WebGL应用体验的新型跨浏览器技术。
5.6新功能
Progressive Lightmapper(预览)
5.6最值得注意的功能之一是基于路径追踪的新解决方案Progressive Lightmapper。 它使烘焙照明可以快速迭代,并可以预测大概结束时间。 在5.6中,它将作为一个预览功能发布。
当我们推出Unity 5.0时,Enlighten取代Beast提供烘焙和实时全局照明(GI)。 然而,Enlighten不适用于烘焙照明的所有用例,因此需要Progressive Lightmapper提供解决方案。
我们希望提供一个解决方案,不仅可以为烘焙灯光带来很好的效果,还可为照明艺术家提供改进的工作流程,包括快速,可预测的迭代功能。
在以前发布的Unity版本中,对场景的更改需要重新做烘焙,并且只有烘焙完成后才能显示结果。 在5.0中, Enlighten允许我们把使用预计算获得的实时GI作为预览。
Enlighten在烘焙方面提供的功能是能够在过渡期间使用预计算的实时GI实时改变灯光并立即看到结果。 然而,对某些参数,材质或几何形状的修改仍然需要进行重新烘焙,在此期间您不会得到任何反馈,同时材质反照率和发光度却可以像灯光一样进行变动。
例如,当在烘焙的阴影或者光线反弹级别上进行迭代时,我们需要等待几分钟甚至更长时间才能看到变化,这很让人沮丧。这大大限制了您可以通过烘焙照明实现的质量。 使用Progressive Lightmapper,您几乎可以得到即时的反馈。 虽然一开始在场景渲染图上会看到很多噪点,但是图像质量很快就会得到改进。
新灯光模式替换混合模式照明
灯光模式正在取代混合模式照明,这使得烘焙照明可以与实时照明相融合,包括烘焙和实时阴影。 我们提供多种预设,以涵盖广泛的场景,包括完全实时GI照明,部分烘焙照明和完全烘焙的照明。 我们添加了烘焙阴影遮罩的能力,提供“超越实时阴影距离”的阴影。 这大大减少了实时阴影距离,提高了性能。对远距离阴影与实时镜面高光的支持可以实现更高的视觉逼真度。已经为每个灯光类型和渲染路径添加了实时阴影淡出,并且从实时阴影转换到阴影遮罩是无缝的。
混合灯光模式:
- 在间接烘焙模式下,混合灯光表现为实时动态灯光,并附加由烘焙光照贴图和光线探测器采样而来的间接照明。 像雾这样的效果可以用于超越实时阴影距离。
- 在Shadowmask模式下,混合灯光是实时的,静态对象投射的阴影被烘焙成阴影纹理和光线探测器。 从这些预计算的数据中收到来自静态对象的阴影。 来自动态对象的阴影通过阴影距离内的阴影贴图接收。 间接照明从烘焙光照贴图和光线探测器采样。 这种模式大大减少了渲染阴影投射物的数量,并仍能在远处产生阴影。 然而,静态对象在动态对象上产生的阴影质量不是很高。
- Distance Shadowmask是一种混合模式,允许动态对象接收来自静态对象的高质量阴影,以及超越实时阴影距离的预计算阴影。 为此,从静态对象投射的阴影在阴影遮罩纹理和光线探测器中进行预计算。 然而,在阴影距离内,动态和静态对象都将使用实时阴影贴图进行渲染。 距离之外的阴影将使用预计算阴影,两者之间平滑过渡。 间接照明从预计算光照贴图和光线探测器采样。
- 在Subtractive模式下,直接照明被烘焙到光照贴图中,因此静态对象将不会有来自混合光的镜面或光亮的高光。 但是,动态对象将被实时照亮,并通过光线探测器从静态对象接收预计算的阴影。 主定向光允许动态对象在静态对象上投射减色实时阴影。
我们还重新设计了照明窗口以增强可用性,并添加了一个新的Light Explorer窗口,以简化照明艺术家的工作。
支持Vulkan - 将图形性能提升到一个新的水平,并增加了移动设备的电池寿命
Vulkan是新一代的图形和计算API,可在台式机和移动平台上提供高效、跨平台的现代GPU功能。
它通过多线程并行来充分利用多个CPU内核,在使速度提高的同时,减少了驱动程序开销和CPU工作负载;,使CPU可以更好地进行额外的计算或渲染。 总而言之,我们已经看到Unity的渲染性能提升了30-60%,而无需处理Vulkan API的任何细节。
Vulkan的另一个优点是比使用OpenGL ES渲染相同内容的功耗更低。 Vulkan消耗的平均电量是OpenGL ES的88-90%,因此可以增加“10-12%的额外播放时间”,如下图所示,您可以看到相对于OpenGL ES的功耗。
Unity 5.6在Android,Windows和Linux平台上添加了Vulkan支持。我们还增加了Vulkan对OpenVR的初步支持。
TextMesh Pro即将集成到Unity,免费使用
GDC 2017上我们宣布TextMesh Pro是Unity资源商店中表现最好的工具之一。
TextMesh Pro可以替代Unity现有的文本组件,例如Text Mesh和UI Text。 TextMesh Pro使用签名距离字段(SDF)作为其主要的文本渲染管线,使得可以以任何点大小和分辨率清晰地渲染文本。 使用一组利用SDF文本渲染功能的自定义着色器,TextMesh Pro可以通过简单地更改材质属性来动态地更改文本的视觉外观。 添加视觉风格,如扩张,轮廓,柔和阴影,斜面,纹理,发光等,并通过创建/使用材质预设来保存并调用这些视觉风格。
TextMesh Pro提供对文本布局和格式设置的改进控制,使用户可以控制字符,字,行和段落间距,支持字距和基本连字,以及附加文本对齐模式,如对齐和刷新文本。 超过30个富文本标签 可用于让用户控制边距,缩进,用户可自定义 样式 , 链接 ,甚至 支持使用多个字体和图形与文本 混合。
我们已经开始着手将TextMesh Pro的功能集成到Unity 2017中,并将定期更新功能和兼容性来继续支持该资源,确保为TextMesh Pro用户提供无缝体验。
在此之前,您可以从Asset Store下载新的 免费版TextMesh Pro (需要Unity 5.3或更高版本)。
图形改进:实例化
Unity 5.6还包括对图形各方面的大量改进,包括粒子系统和GPU Instancing。
在5.4和5.5中引入的GPU Instancing允许您在单个绘制调用中使用实例着色器绘制相同网格的许多实例,同时仍允许每个实例拥有各自的数据集,包括位置,旋转和颜色。 当CPU是限制您的帧率的因素时,实例化可以提供显著的性能优势。 要启用标准着色器实例化,请勾选材质设置上的“Enable Instancing”复选框。 或者,您可以手动为您自己的着色器添加实例化支持。
在5.6中,我们现在支持Procedural Instancing,其中实例数据由着色器中的自定义源提供,而不是来自Material Property Block。我们也支持DrawMeshInstancedIndirect,它的 绘制参数由ComputeBuffer提供。 这种通过脚本渲染实例的新方法几乎没有CPU开销。所以,如果CPU是限制您游戏帧率的因素,那么您游戏的性能会得到显著提升。
查看 我们的文档 ,了解如何使用GPU Instancing。
改进粒子系统
在Unity 5.5中,我们可以为粒子添加自定义数据,这些数据可以从脚本和着色器访问。 在5.6中,我们扩展了这个系统,您现在可以在Inspector中直接配置数据,从而可以很容易地创建曲线和颜色应用在脚本和着色器中以驱动自定义逻辑。 更进一步,本模块中定义的颜色还可以使用高动态范围。在这之前,粒子系统是无法使用高动态范围数据的。
我们还允许并行处理多个粒子系统,以改进工作流程。
锥形,圆形和单面边缘形状现在有新的参数,用于控制粒子的生成。 以前,所有的粒子都是在表面上或体积内随机产生的。 现在,粒子可以顺序生成,也可以按期望的增量生成。
现在可以为爆发发射指定重复计数和间隔。 以前,每个爆发只能被触发一次,并且最多只能爆发四次。 使用新的系统,您将获得最多八个爆发,并且每个可重复任意次数。
最后,独立播放器中的粒子实例化速度现在已经快了两倍多!
我们添加了一个基于物理的渲染材质验证器,可以验证Albedo和Specular值是在可接受的范围之内。 Albedo值也可以根据用户定义的亮度范围进行验证。
为Metal添加Compute Shader支持
Unity 5.6为iOS和MacOS添加了对Metal Compute Shader的支持。计算着色器由HLSL编写,就如Unity中的其他图形API一样,它们最终都会转换为Metal Shading Language(目前仅限于Metal v1.1)。如果您希望使用UAV重用现有的常规着色器,请务必使用pragma target 4.5而不是5.0。 我们还为编辑器添加了使用Metal渲染后端的实验性支持。
新的后期处理栈
新的后处理栈已发布,支持Unity 5.6及5.5。您可以从Asset Store免费获取 新的Post Processing Stack插件包 。
它将一套完整的图像效果组合到一个后期流程中。这种做法的优点是:
- 效果顺序配置始终正确。
- 允许将许多效果合并到单个pass。
- 具有基于资源的配置系统,便于预置管理。
- 所有效果在UI中分组在一起,用户体验更好。
它具有以下效果:
- Antialiasing(抗锯齿,FXAA、Temporal AA)
- Ambient Occlusion(环境光遮蔽)
- Screen Space Reflections(屏幕空间反射)
- Fog(烟雾)
- Depth of Field(景深)
- Motion Blur(运动模糊)
- Eye Adaptation(眼适应)
- Bloom(虚化)
- Color Grading(颜色分级)
- User Lut(摄影表)
- Chromatic Aberration(色差)
- Grain(粒度)
- Vignette(晕影)
- Dithering(抖动)
该工具还包括一组监视器和调试视图,以帮助您正确设置效果并调试输出中的问题。
具有4k视频播放能力的新视频播放器
Unity 5.6包含一个全新的视频播放器,全新架构平切添加了硬件加速。 即使是普通的手持设备,现在也可以播放支持Alpha通道的高分辨率4K视频。 它旨在使用编辑器和目标平台的视频硬件功能。 它支持目前被广泛使用的H.264 / AAC编解码器,在无法使用H.264 / AAC的情况下则会使用VP8 / Vorbis。 将来我们还会添加对其他编解码器的支持。
新的视频播放器就是一个组件,用于播放您在场景中的电影,提供沉浸式的互动视频体验,高品质的硬件加速性能以及360度视频播放的支持。您可以观看 Unite 2016 Keynote视频 来了解它的工作原理。
NavMesh:改进的寻路和AI
在Unity 5.6中,我们引入了底层API,旨在解决以前版本的限制。 这些改进为角色和AI导航提供了一整套新的用例和游戏选项。 此外,底层API还提供四种新的易于使用的组件,这些组件 已在Github开源 。
能将Unity的NavMesh功能应用到动态生成或动态加载的内容上是开发者呼声最高的功能。 利用5.6中的新功能,这不仅成为可能,而且简单高效。 只需加载或生成场景,然后让NavMesh进行烘焙即可。
NavMesh现在是基于组件的,而不是只应用于整个场景中。 这个新架构允许每个场景拥有多个NavMesh。 此外,我们现在可以有不同的代理类型。 这允许您轻松调整不同角色的半径,高度和移动设置。
通过添加NavMeshSurface组件,我们的NavMesh可以与游戏对象而不是世界轴对齐。 这意味着我们可以将我们的导航网格定向到我们在3D空间中所需的任何方向。 对于想要使用我们的导航工具开发2D游戏或者想要把导航系统与Y轴分离的开发者而言,这是一个很大的改进。
因为现在NavMesh烘焙是通过组件来进行,它不再被限制在某个场景中。 这意味着我们可以选择哪些元素成为烘焙的一部分,或者我们可以选择烘焙特定的体积。 如果你曾经因为关卡过大无法使用NavMesh,那么您现在可以只生成您所需要的NavMesh。 这样在回放过程中可以节省大量烘焙时间和内存开销。 使用这种方法,只有那些已经改变的区域才需要重新烘焙。此外,因为它是多线程的,它的效率非常高。
新功能改进了2D游戏开发工作流程
我们一直在努力提供更多的2D支持,并且很高兴地在5.6中宣布几个新的2D功能。
排序组组件提供了在同一排序层上将其他对象分开渲染一组对象的功能。 它确保作为排序组的子项的所有渲染器都被排序在一起,从而有助于管理复杂场景。
通过将Transparency Sort Mode设置到自定义坐标轴,新的Axis Distance Sort可解决Z轴排序问题。
Outline Editor是Sprite Editor窗口的新增功能。 它可以用于自动生成可选择的细分级别,或者手动编辑精灵的网格形状。 您还可以通过选择网格与实际图像的接近程度来控制细分质量。
我们为SpriteRenderer引入了9-Slice Sprite,这是一种2D技术,它允许您在不需要准备游戏中的多个资源的情况下重复使用具有可变维度的图像。 它类似于UI中使用的9-Slice。 这允许您在尺寸变化时拉伸或重复图像的定义区域,提供创建平台或背景的快速技术,同时仍使用少量纹理内存。
最后我们还添加了EncodeToEXR功能,这样可以允许您将任何HDR纹理的内容保存为一个磁盘上的EXR文件。类似于为处理非HDR纹理设计的EncodeToPNG和EncodeToJPG。
2D物理改进和功能
对于2D物理引擎,内部2D碰撞处理系统已经被完全重写,可提供更强大和可靠的碰撞测试,确保在所有条件下都能正确的获得Enter,Stay和Exit回调状态。
在2D物理引擎API的众多改进之中,几个特性脱颖而出:
- 能够检索Rigidbody2D或Collider2D的所有碰撞结果,可以返回完整的碰撞详细信息或只返回碰撞中的Collider2D。
- 添加了一个名为ContactFilter2D的新类型,可用于所有物理查询。 这允许通过层掩码、碰撞法线角度、Collider2D Z深度等快速过滤结果,以及现在接受新的ContactFilter2D的新的非分配重载,如Linecast,Raycast,BoxCast, CircleCast,CapsuleCast,OverlapPoint,OverlapCircle,OverlapBox,OverlapArea,OverlapCapsule,GetContacts&IsTouching。 用于过滤的示例用法包括:询问玩家是否沿特定方向触摸特定图层; 如果Collider2D区域在特定层上有任何接触,或者Rigidbody2D在特定方向上有任何接触。
- 检索所有Collider2D与其他Collider2D重叠的能力,并附加到特定的Rigidbody2D,或使用新的OverlapCollider功能重叠特定的Collider2D。
- 检索当前连接到Rigidbody2D的所有Collider2D的能力。
5.6版本中的另一个新组件是CompositeCollider2D,它允许您将BoxCollider2D和PolygonCollider2D(更多对碰撞体的支持即将到来)合并到单个组合的Collider2D中,并使用多边形或轮廓(边缘)生成最终的碰撞体。 除了提供由多个独立的Collider2D形成的单个连续表面,当许多单独的Collider2D合并到单个复合材质中时,该解决方案也可以显著加快场景加载。 CompositeCollider2D具有您所期待的任何Collider2D的所有功能:它可以具有材质,触发器,由提供给effector使用,并附加到Rigidbody2D上等。
使用新的 EdgeRadius 功能,您可以在BoxCollider2D或EdgeCollider2D上配置半径,允许扩展边缘和顶点曲率。
作为API改进的一部分,还有一个新的Distance功能,可以让您查询两个Collider2D或Rigidbody2D的最近距离或重叠(穿透)。 使用此功能,可以解决Collider2D或Rigidbody2D上的所有重叠。 当与Kinematic Rigidbody2D一起使用时,可以获得完全自定义的解决方案。
最后,2D Colliders的粒子碰撞码也使用新的SIMD库完全重写,以提供快速的碰撞抑制,从而显著提高性能(大约10倍)。 另外,我们添加了一个新的2DCollider 重叠解析器,从而可以更快更准确地从重叠中脱离出来。
为iOS平台添加Unity Performance Reporting支持
Unity性能报告会自动在设备和平台之间收集应用程序错误,因此您和您的团队更容易实时查找和解决问题。 Unity 5.6的性能报告现在能捕获并报告iOS游戏记录的崩溃,将来会支持更多平台(下一步是Android !)。 您不需要在项目中添加任何代码来使用性能报告,只需打开“Services”窗口中的“Performance Reporting”即可开始使用。
可视化调试物理
有时可能难以判断场景中的哪些对象应该或者不应该碰撞,特别是当渲染和碰撞网格不同步时。 为了帮助您快速检查场景中的碰撞几何体,我们添加了物理碰撞的调试视图模式。 它旨在为我们提供一个在Unity场景中快速找到与碰撞相对应的碰撞体。 它也可以作为一个分析工具,因为它可以隐藏所有不被使用的Rigidbodies,以及显示所有凹面网格的MeshColliders
物理引擎的反穿透方法和改进的编辑器UI
我们添加了两个新的方法:Physics.ComputePenetration和Physics.ClosestPoint,以帮助编写自定义的反穿透方法。 这对创建自定义角色控制器以及需要额外控制如何对周围的碰撞体做出反馈的游戏代码很有帮助。
目前场景中有一个正在移动的球体和一个静止不动的胶囊。球体在与胶囊重叠的情况下,沿着胶囊转动。 在球体中心有一条红色的光线,显示球体需要翻转的方向和距离,以便与胶囊完全分离。
我们还统一了在场景视图中编辑原始2D和3D Colliders的交互式手柄。 他们现在都使用相同的逻辑并支持新的修改键(Shift和Alt),使编辑碰撞体的尺寸,将中心固定到位,或者从任何方向均匀地缩放形状变得容易。
我们添加了TreeView IMGUI控件,可以显示展开和折叠的分层数据。 您可以使用TreeView为编辑器窗口创建高度可定制的列表视图和多列表,可以与其他IMGUI控件和组件一起使用。 您可以自定义行内容渲染,拖动逻辑,选择逻辑,搜索,排序和重命名项目。
具有MultiColumnHeader和SearchField的TreeView示例
为了帮助您开始使用API函数,请访问我们的 Unity Scripting API文档 或TreeView手册。
我们改进了为每个UI元素发送到GPU的数据量,向Canvas添加了一个新的“AdditionalShaderProperties”。 这会更改创建的所有新Canvas组件的默认行为,并减少渲染画布的内存成本,因为排除了其他未使用的通道。
如果您正在使用 Visual Studio 2017 ,您会注意到,现在可以自动检测带有Unity工作负载的安装,并显示并添加到“外部脚本编辑器”列表中。
Google Daydream&Cardboard VR支持
5.6原生支持iOS和Android版本的Google Cardboard VR,和支持Android上Google Daydream VR平台 。 为了从Daydream平台获得最佳性能和延迟,我们与Google VR NDK集成,以利用该平台的异步重放和VR性能模式。
与Google I/O发布的Google VR SDK for Unity中的Daydream支持相比,我们现在提供了一个更简化的工作流程,进行了显著的优化和减少了延迟。 无需添加任何预制体,脚本或修改manifest文件即可开始使用 - 只需启用VR并将Daydream添加为目标平台,就可以开始制作自己的虚拟世界。
我们还可以轻松地切换和退出VR模式,以便您的应用程序可以轻松扩展到完整的Google VR受众群体,并原生支持Google Cardboard。 针对Cardboard的应用程序可以在较老的设备上运行,这样您就可以接触到尽可能多的用户。目前,Cardboard的支持是专门针对Android的,iOS Cardboard支持即将推出。
如果您有兴趣了解有关Google Daydream with Unity的更多信息,请参阅 Unite 2016 Daydream演讲 。
支持Nintendo Switch
任天堂Switch既可以像主机一样玩,也可以用来当掌机玩的特点,为游戏开发者创造了一个非常好的机会来重新思考如何设计游戏。已经有好几款使用Unity开发的Switch游戏例如《Super Bomberman》与《Snipperclips》在GDC 2017的Unity展台上率先发布。我们很高兴地向大家宣布Unity已经正式支持任天堂Switch的开发(目前该版本基于Unity 5.5,Unity 5.6.x也即将支持)。
支持Facebook Gameroom
通过Gameroom,Facebook为开发人员提供了一种更轻松的方法,将高质量的游戏带入PC,并且让游戏可以充分利用PC的CPU和GPU的能力。您现在可以把您的项目作为原生Windows应用发布到Facebook Gameroom,或者使用 Unity的WebGL支持 发布到 Facebook.com 。
从把内容分享给您的Facebook好友到处理内购 – 甚至从Unity编辑器直接把内容发布到Facebook,这一切全都被整合在了Unity里面。
WebAssembly的实验性支持
在5.6中,我们为WebAssembly提供了实验性支持,WebAssembly是一种新的跨浏览器技术,旨在帮助改进Unity WebGL体验。 尽管从技术上将其定义为一种新的独立的标准,但从我们的角度来看,WebAssembly本质上是 asm.js JavaScript子集的字节码格式(asm.js用于将Unity代码部署到WebGL)。与当前使用的基于文本的表示相比,字节码格式显著地减少了编译为asm.js代码的大小。 这将使代码下载更快,更重要的是,能够更快地解析和编译代码,使用更少的内存。 这将改善大型已编译JavaScript代码库的启动时间,并减少其内存需求 - 这两个都是开发者在WebGL平台面临的常见问题。
改进Unity Multiplayer多人联网
5.6包含对现有Unity Multiplayer功能的优化和稳定性的改进。 值得注意的是,在不太可靠的网络条件下运行时,我们已经提高了稳定性。 大多数更改是透明的,不会影响已有游戏所用的网络API的实现。
除了与编辑器相关的修改之外,我们还对Multiplayer文档进行了改进,制作了一些新的学习材质,并开始了新功能的基础工作。 有关的信息,请查看 这篇文章 ,其中提供了Unity Multiplayer,当前和未来状态的更新。
Unity Collaborate多人协作新功能(测试版)
Unity Collaborate多人协作 可让团队轻松保存、共享和同步其Unity项目。 它很容易使用,所以整个团队可以为项目做贡献,无论他在哪里或担任什么职位。它比传统版本控制(例如Git,SVN)更简单,所以您的团队可以花更多的时间在重要的事情上面 – 制作您的游戏!
基于早期测试版的客户反馈,我们在5.6中添加了一些最需要的功能,包括 部分发布 ,可让用户发布所选文件。 以前,您必须一次发布所有更改过的文件。
通过 忽略文件 ,您可以忽略项目中不想推送到项目的文件和目录,而新的“ 回滚 ”功能可以让项目返回最后一次保存的状态; 特别有助于撤销不必要的更改!
Unity 5.6宣告Unity 5.x周期结束,Unity 2017有什么新功能?
查看 这篇文章 了解关于Unity 2017开启Unity版本号命名新时代,与Unity 5.x产品周期截止。