2017.3完善了2017版本为艺术家和开发者们引进的,几种新的功能和改进。
我们非常兴奋能够为大家分享所有,Unity 2017.3能够为大家带来的,新改进的功能。在深入了解细节之前,我们想回顾一下Unity 2017(如果您等不及了,那就请直接跳到下面的"新内容"部分)。
在新的Unity 2017版本中,我们加倍努力地帮助艺术家、设计师和开发者们更有效地创造与合作。强有力的虚拟工具例如Timeline、Cinemachine和Unity FBX Exporter方便了艺术家们进行创作。
我们继续改善了图形质量以及运行性能来帮助您在最新兴起的平台(desktop, console, mobile, VR, AR, smart TVs)上的曲线(curve)方面保持领先,从而更好地利用最新GPU和原生Graphics API。举个伟大的栗子吧:一流的演示电影系列《亚当》(Adam)。
其他功能,好比最新的2D工具和Unity Teams,能够帮助您更快地得到更好的结果。最后,我们给您提供了一些新的方法,使用各类有效数据(在Ads、IAP以及Live-Ops Analytics解决方案中)来优化游戏的实时表现、最大化您的收益。
Unity 2017.1, 2017.2和2017.3发布了许多关键功能来支持这些目标的实现。接下来是总结扼要:
##推荐
同时我们非常兴奋能分享一些已发布或正在制作中的,基于Unity 2017.X的产品:
最后,在详解2017.3之前,请看看下面这个视频,其包含了2017各版本的一些新改进的功能。
Unity 2017 - Highlights Youku
##新内容##
年末已至,我们很高兴地宣布,作为2017系列最后一个版本的Unity 2017.3现已可获得。2017.3引入了几种为艺术家和开发者们引进的新功能,我们也特别兴奋能够分享用于创作交互式全景视频(360-video)体验的改进工具箱。
我们打算用大量的功能更新日志终结2017年,包含下面几点:
我们特别兴奋能够改进您与 360/180 全景视频 以及 2D/3D 视频 相关的工作流程。您现在可以轻松地把各类 2D/3D 的视频放入Unity中,在单机、手机以及XR运行时放到Skybox里回放来营造360度全景视频体验。
改进包括新的无光照(Unlit)和表面(Surface)粒子着色器(shader),以及带状粒子轨迹(ribbonized particle trails)。可以基于粒子的存活时间将粒子进行连接。由于轨迹中的每个点都是一个粒子,因此可以使用条带模式来创建动画轨迹,例如将带状粒子轨迹与噪声模块(Noise Module)一起使用。
您可以自定义基于文件夹内脚本的托管程序集(managed assemblies)。通过将项目中的脚本分为多个程序集,可以为大型项目大大减少编辑器内脚本编译的次数。
托管内存分析器支持(Managed Memory Profiler support)
您现在可以利用支持所需API的Mono/.Net 2.0来拍摄托管内存快照(take managed memory snapshots)。这意味着您可以在Editor内直接拍摄内存快照了。
最新的压缩库(Crunch Library)
Crunch Library现在压缩DXT纹理可以快达之前的2.5倍,同时提升了压缩率约10%。更更要的是,它现在能够压缩ETC_RGB4和ETC2_RGBA8纹理,从而可在iOS和Android设备上使用紧缩压缩(Crunch compression)。
现在对**(BC6H)PC**,Xbox One和PlayStation 4支持HDR压缩光照贴图。我们还对GPU instancing进行了很大的改进,将Dynamic Resolution作为一个引擎功能第一次添加到了Xbox One平台上,其他平台后续会逐渐添加。
我们正为渐进光照贴图(Progressive Lightmapper) [包括间接烘焙(Baked Indirect), 阴影面(Shadowmask) 以及弱色化(Subtractive)]引入光照模组(Lighting modes),支持提供使工作流更具直觉化实时探测(realtime probes)的多细节层次技术(LOD),用于已烘焙光照贴图(baked lightmaps)的HDR编码具有更高的视觉质量。
为了帮助您获得最好的VR体验,您现在可以获取VR设备的刷新率、尺寸、屏幕宽高比、HMD路径以及控制器路径来作为设备信息和设备状态事件。
物理方面的改进包括衣料的自碰撞和相互碰撞技术,并且改进了限制性绘图(constraint painting)。
我们引入了可播放调度(Playable scheduling),使得您可以在真正播放之前预取数据。暂时只影响AudioClipPlayables,但是在未来,该调度可以被其他assets:audio, video和timeline使用。我们为整数和枚举类型的组件属性新增动画化(animate)支持。同时,我们还为animation Preview窗口引进了新的『2D』模式按钮。所以,现在您可以在Animator窗口进行变焦(zoom),框选(frame)和自适应(autofit)操作了!
现已支持微软新的Xbox One X控制台。使用Quality Settings开启4K HDR渲染支持,或通过其它途径例如:改善帧率(framerate)、增加图解逼真度(graphical fidelity)来利用额外能源(power)。所有的Unity 2017.x都已支持Xbox One X。
在2016年11月,Unity和小米宣布合作,致力于帮助开发者们为中国的2000万小米——中国地区最大的安卓商城的用户们带来各种游戏。自此,一些早期采用(Unity)的游戏已活跃在小米商城。在2017年11月末,用于小米推送商城服务的崭新入口已投入使用!想要开始(相关开发),请阅览FAQ并在此页面开始指引。
标准事件现在正式退出测试版,您也可以直接在Unity 2017.3中获取它。我们还引入了漏斗模板(funnel templates),配合标准事件,允许您创建普通漏斗,点击几下就可以揭示关键见解(reveal key insights)。(用来分析用户行为,检测玩家流失情况等)
Unity自动定义如何将脚本编译成托管程序集(managed assemblies)。通常,当您增添新脚本到项目中时,Unity Editor用于编译迭代脚本的编译时间会增加。
现在,您可以使用程序集定义文件根据文件夹中的脚本定义自己的托管程序集。将项目脚本分离成具有明确定义的依赖项的多个程序集,确保在脚本中进行更改时只需要重建所需的程序集。这减少了编译时间,对于大型项目尤其有用。
每个托管程序集都可以看作是Unity项目中一个独立的库。
上面的流程图阐明了如何将项目脚本分割成几个程序集。因为在Main.dll里只有脚本会改变,所以其他的程序集都会被重新编译。由于Main.dll包含更少的脚本,它将比Assembly-CSharp.dll更快。
同样,只有Stuff.dll里的脚本改变才会引发Main.dll和Stuff.dll重新编译。
在我们的特色预览博客,您可以阅读更多关于如何使用我们的程序组定义文件。
2015年,我们发布了一款实验性质,支持IL2CPP的内存管理分析器。其一开始作为Unity Hackweek项目,在BitBucket发布后成了开源项目。请移步Bitbucket的内存分析器项目页面来观看demo视频,获得更多细节。
我们已经为拍摄托管内存快照用的内存分析器所需API新增Mono/.Net 2.0支持。这意味着您可以在Editor内直接拍摄内存快照了。
变换工具(Transform Tool)是一个多功能工具,包含下列三种标准功能:位移(Move)、旋转(Rotate)和尺寸(Scale)。变换工具并不是要取代这三种标准工具,而是想要在提供一个工具的情况下,使您能够获得所有三种功能,而不用在它们之间换来换去。
当枢轴旋转(pivot rotation)设置成"全局(Global)"模式时,您可以将GameObject沿着世界轴位移旋转。
绕轴旋转,屏幕空间旋转,自由旋转:
当枢轴旋转(pivot rotation)设置成"局部(Local)"模式时,您同样可以将gameObject沿着自身轴拉伸。
如果您按住"SHIFT"键,变换工具会进入Screen Space模式。
此模式下,您可以沿屏幕空间位移和旋转。
沿轴位移,平面位移,绕轴旋转以及世界尺寸拉伸:
当您按住"CTRL"键(Win)或"Command"键(OSX)时,单位拽变会在下列情况下激活:
轴位移;
平面位移;
轴旋转;
轴拉伸;
世界尺寸变换
当您按住"V"键时,变换会进入Vertex Snapping模式。
这使得您能够通过位移gameObject的顶点从而与另一gameObject顶点重合。
Cinemachine,是我们用于游戏内置摄像机(in-game cameras)、动画(cinematics)、过场动画(cutscenes)、电影的可视化预览(film pre-visualization)以及电影制作艺术(cinematography)的系统,同时包括大量新功能和改进。
改进包括:
其他新的功能和改进包括人偶摄像机行为(dolly cam behavior)和POV系统:一种第一人称射击类型,瞄准组件等等。
想要了解所有功能和改进,请进入我们的官方论坛来获取相关列表信息。
Cinemachine功能组件现已在Asset Store发行。请下载最新版本到您的项目中。
Unity中,您可以控制照明的预计算(pre-computation)和组合方式(composition),从而通过对某一光线(Realtime, Mixed和Baked)分配各种模式来获得某一效果。使用Mixed模式能显著降低实时阴影距离,以提高性能。如果支持实时镜面高亮(realtime specular highlights)和远距离阴影,也可以实现更高的视觉保真度(visual fidelity)。
Unity 2017.3中,您可以使用渐进光照贴图并从下列照明模式中选择相应的模式来做同样的事:
Unity 2017.3 - Progressive Lightmapper
我们已经为拥有实时光线探针的LOD物体新增生成光线的能力,除了可以用来烘焙光照贴图,还为用户提供了更直观的工作流来打造自己的光线。LOD使您可以在摄像机距离很远、并且在靠近时(获得网格)变得困难的情况下,以较低复杂度(in lower complexity)获得网格(meshes)。您可以通过这种方法,减少渲染远处物体时的预算等级(the level of computation)。
当您在场景中同时使用Unity的LOD系统、烘焙光以及实时全局光(Realtime GI)时,系统将会把LOD组(Group)外细节最多的模型照亮,并把它当做一个规则的静态模型。它为直、间接光使用光照贴图,同时为Realtime GI分割光照贴图。
然而,对于LOD组中更低等级的光照细节,您只能将烘焙过的光照贴图与光线探针或者Light Probe Proxy Volumes相结合,且必须放置在LOD组周围。
为了允许2017.3的烘焙系统可以生成实时或烘焙过的光照贴图,您只需要打开GameObject–Renderer–Lightmap Static。
下面的动画展示了实时环境(realtime ambient)的颜色是怎样影响使用更低LODs的实时全局光照的。
为了获得更好的视觉效果,我们为PC、Xbox One和PlayStation 4上增添了HDR压缩光照贴图(BC6H)支持。使用高质量的光照贴图的优势有:采用16位浮点值取代RGBM解码光照贴图值。从而使支持范围达到了0~65504。同时BC6H格式比DXT5 + RGBM组合更高级,而且不会减少任何,与经过RGBM解码、DXT压缩所得颜色光点,相关联的带状光点(banding artifacts)。需要从HDR光照贴图着取样的Shaders有更少的ALU指令,因为没有必要对采样值(sampled values)进行解码,而且BC6H格式拥有和DXT5一样的GPU内存需求。
在Player Settings里,将Lightmap Encoding设置成High Quality,就可以轻松打开HDR啦。
选择High Quality会打开HDR光照贴图支持,而Normal Quality则会转换成RGBM解码。
当打开Lighting Window里的lightmap Compression时,光照贴图会被压缩成BC6H压缩格式。
5.6版本中引入了GPU Instancing来减少每个场景同时渲染同一个Mesh的多个拷贝时使用绘制调用(draw calls)的次数,也因此显著提升了渲染性能。
现在的GPU instancing大为改进,包括:现在每个实例(Per-instance)的属性都会被包装到一个,拥有实例常量缓冲区的(instancing constant buffer),只包含一个数组的,结构体(structure)数据类型内。
现在对于大多数平台,无需用户指定,系统便会自动计算实例数组的大小(常量缓冲区的最大值,或是,上述结构体类型的大小)。OpenGL和Metal中,实例批(Instancing batch)的大小因此被增加,实例着色器的变种(instancing shader variants)也编译得更快,并且很有可能消耗更少的CPU-GPU数据带宽(data bandwidth)。
Unity 2017.3里引入的最新的Crunch压缩库现在压缩DXT纹理可以快达之前的2.5倍,同时提升了压缩率约10%。更重要的是,它现在能够压缩ETC_RGB4和ETC2_RGBA8纹理,从而可在iOS和Android设备上使用Crunch compression。
Crunch是一种有损纹理压缩格式,通常用在DXT纹理压缩的顶部。Crunch压缩帮助减少纹理大小来使用更小的硬盘空间并加快下载速度。Richard Geldreich开发的原始的Crunch压缩库可以在GitHub中获取。
Unity 5.3版本首次支持Crunch纹理格式,在如今的Unity 2017.3版本中,我们引进了Crunch压缩库的最新版本。
使用Crunch压缩的纹理会首先解压成DXT,然后实时上传到GPU里。处理过的纹理不仅占用了更少的空间,而且解压得更快。因而使用Crunch格式分配纹理非常高效。同时,Crunch过的纹理会花很长的时间来压缩,这是使用Crunch的一个主要缺点(对于大项目,在Unity Editor里将所有纹理压缩成Crunch格式会花好几个小时)。
Crunch可以帮助您减小您创建的手游体积,因此也更容易遵守App Store无线体积限制(over-the-air size limitations),最终使您能够让更多的受众接触到您的内容(app)。
若要在Android,iOS和tvOS平台上使用Crunch压缩,您只需在Inspector窗口为您的纹理选择"RGB Crunched ETC"或"RGBA Crunched ETC2"格式即可。
如果您在Default标签打开了"Use Crunch Compression"选项,安卓平台上所有纹理都会默认被ETC Crunch压缩。
从下图您可以看见使用Crunch在默认质量设置下压缩的纹理。请注意:最后一张纹理的光点是,在选中GPU纹理格式(DXT/ETC)下,被Crunch压缩时所引进(introduced)的。
Original image 24 bits/ pixel | DXT 4 bits/pixel | Crunched DXT 1.24 bits/pixel |
Original image 24 bits/ pixel | ETC 4 bits/pixel | Crunched ETC 1.33 bits/pixel |
如果您对于最新的Crunch纹理压缩库感兴趣,想要了解更多的话,请访问此博客,包含更多关于比较体积与性能的例子。
顾名思义,动态分辨率指的是动态缩放部分或所有渲染目标来减少GPU的工作量。当性能数据表明游戏由于GPU跳动(bound)将要降帧时,会自动触发动态分辨率。这种情况下,逐渐缩小分辨率可以帮助维持帧率稳定。如果用户想要体验游戏中异乎寻常的GPU增强部分,也可以手动开启。如果逐渐缩放,动态分辨率可以说基本察觉不到。
2017年早些时候引入过新的视频播放器,其可以播放全景视频,并通过增添CG物体、立体混响音(ambisonic audio)、视觉效果等等,使得(用户与)全景视频能够真正交互起来。
在2017.3版本中,您现在可以将2D或3D的全景视频放到Unity中,并在VR平台运行时放到Skybox里回放来营造单机360度全景视频体验。
Unity为180°和360°视频在球面映射布局(equirectangular layout)(经度和纬度)或立方体映射(cubemap)布局(6边(frames))方面提供了内置支持。
球面映射2D视频,对应360°内容,纵横比应是2:1;而180°则是1:1。
球面映射2D视频
球面映射2D视频根据面布局不同,采用的纵横比应为:1:6, 3:4, 4:3或6:1。
立方体映射2D视频
为了在Unity Editor中使用全景视频功能,您必须可以使用全景视频剪辑(panoramic video clips),或知道怎样制作它们。请查看我们的文档页面,按照指引,一步一步学会如何在Unity Editor显示任何(形式的)全景视频。
请牢记:许多桌面硬件视频解码器仅限于4K分辨率,而移动硬件视频解码器通常仅限于2K或更小,在这些平台实时回放时,对分辨率会有所影响。
与新的开发者预览一起引进技术性改进,包括:一种用于Android NDK的C API;暂停和返回AR Sessions的功能:其允许用户在返回APP时暂停和继续追踪;改进运行效率;改进可追踪性与锚点接口,包括锚点、平面识别与点云。了解更多关于ARCore Developer Preview。
随着Unity 2017.3支持Vuforia 7,您可以创建跨平台的AR应用。Vuforia 7引进了Model Targets:一种使用预存(pre-exiting)三维模型将数字内容放置到特定对象上的新方法。还有就是Vuforia Ground Plane,允许您将数字内容放在水平表面上,比如地板或桌子。利用现成的平台推动者如ARKit,Ground Plane将逐渐支持iOS和Android的各种设备。了解更多有关Unity 2017中的Vuforia。
我们非常兴奋地欢迎用于Unity的,OTOY路径追踪GPU加速渲染引擎的到来。您可以免费获取用于Unity的OctaneRender,或购买20、60美元的套装,以解锁更多的GPU和相关插件,引领3D制作工具。诞生于GPU的OctaneRender是一种精准的(unbiased)渲染引擎,其会利用物理级别精度(physics-grade precision)来追踪场景中每条光线,从而为CG和VFX提供无与伦比的真实感(unrivaled photorealism)。Octane Render支持Unity 2017.1及更高版本。了解更多……
使用OctaneRender制作的Unity场景渲染,现于商店里可免费获取!
##粒子系统
Velocity over Lifetime module现在包含一个新的曲线,它允许根据粒子寿命长短控制粒子速度。所以现在改变粒子速度也可以不影响其运动方向。它还包括对负速度(negative speeds)的支持,这有助于产生重力/涡流(vortex)效应。
我们发布了用于粒子的表面(surface)和无光(unlit)shader。它们提供了所有您会期望的核心粒子功能,通过类似的接口连接我们现有的标准shader。现在很容易就可以配置混合模式(configure blend modes),alpha测试阈值(thresholds),软粒子距离(soft particle distances),以及许多更多的特性。同时还支持blended flipbooks和扭曲效应(distortion effects)。Surface shader也使之更加容易支持法线贴图(Normal Mapping)和PBR照明。
轨迹模块(Trails Module)新增了一个Ribbon Mode选项,允许粒子根据它们的寿命相连,这样可以避免每个粒子在它后面留下轨迹。因为轨迹上的每个点都是由粒子呈现的,所以可以使用这个模式来创建动画轨迹,例如,通过与噪声模块(Noise Module)连接来使用它。
外形模块(Shape Module)里,现在可以使用原始类型(primitive type)为Line或LineStrip的网格了。可以很容易地沿着线生成(spawn)粒子,而不是只在网格表面上生成粒子。
Unity 2017.3已支持32位网格,网格的约束(constraint)最终可升至65, 536或更少个顶点(vertices)。此支持已经完全集成(integrated)到粒子系统中,这意味着可以在这些新的大型网格的表面上生成(粒子)。尽管性能成本可能会高一点,您现在也可以用32位指数(indices)绘制粒子网格。
我们还对编辑器做了一些改进,以便改进您创作特效(effects)的工作流程:
布料改进(Cloth improvements)
布料物理(Cloth physics)有很大的改进,包括:更好的用于创作布料的编辑器内工具(in-editor tools),并使用了更多的PhysX内部功能(with more of PhysX internals exposed)。为您提供更多碰撞、自我碰撞的选项等等。
您现在可以使用基于画笔(brush-based)的方法对布料上的约束(constraints)进行绘制和更新。您也可以打开互碰(intercollision)来制作不同的布料碰撞体。
您可以从此处获取关于如何开始使用布料改进的相关信息。
##各类平台
为Facebook的Game Room新增分段上传功能,可用于上传单个最大体积约250MB的文件。以前,只有那些被修改的部分会被上传(分成10MB的各个片段)。
Unity自5.6版本以来就一直支持Facebook的Game Room里的桌面游戏应用。对Windows本地客户端的支持允许玩家体验网页游戏和只构建于Windows平台的游戏。了解更多有关如何接触Facebook上的二十亿用户。
##XR
Witch Oculus在最新的Rift更新中推出了其新的Oculus Dash菜单和UI,我们已经新增了对Oculus Dash Depth的支持,并将摄像头景深信息暴露出来,使得Oculus Dash可借此部分地阻断(occlude)world-space overlays。
现在进行VR体验时您也可以使用Unity中的地形树功能了。参阅此文件中相关细节来为您的世界加点树吧。
在2017.2版本中,我们为基于PC平台的VR发布了Stereo Instancing功能;我们现在扩展到了PSVR上。Stereo Instancing是一种令人兴奋的,对渲染过程的优化(advancement):其打开硬件优化(hardware optimizations)来渲染立体图像(stereo images)。这意味着开发者将能够保持流畅的帧率来做更多的事。
为了将我们的精力放在DirectX的最新版本上,Unity 2017.3(Unity Editor和Standalone player)将不再支持DirectX 9(2002年初次发布)。您可以在我们的博客阅读有关如何继续支持Wingdow XP。
最后,如2017年10月首次宣布,Unity从2017.3版本之后将不再包含Samsung Tizen和SmartTV。尽管如此,Unity依然会提供12个月的,包括从2017.2版本(2017.10.12)以来的补丁和安全更新在内的支持。想要获取Tizen和SmartTV有关Unity的最新信息,请访问Samsung合作页面或通过[email protected]直接和Samsung联系。
##Unity Teams
现在可以购入Unity Teams功能,使各种规模的团队都可以在Unity内轻松地保存、共享和同步项目。Unity Team Basic免费并且适用于刚起步的小型团队。而Unity Teams Advanced,每个月花费9美元,您就能拥有更多功能和容量(capacity)。您可以增添更多的小组成员 、云存储或更加自动化的开发(builds),为您想要的功能付款吧。请前往unity3d.com/teams了解更多细节。
如果您已经在使用Unity Teams的功能(合作与云开发(Collaborate, Cloud Build),您可以在2018年1月9日前升级到付费订阅,以防止服务中断。另外,现在是升级到Plus和Pro版本的最佳时机。所有在2018年1月31之前激活的Unity Plus和Pro订阅,无需额外花费便可享用Unity Teams Advanced。了解更多有关此服务。
##Unity Analytics
随着此版本发布,我们很高兴向您介绍漏斗模板(funnel templates)。
了解更多有关Standard Events。
针对Plus和Pro用户,LiveStream现在可以将前半小时内分解(broken down)的瞬时指标(instantaneous metrics)展示出来。IAP收益会在核实之后再显示出来,使收入报告更准确。还可以在Activity view中,筛选新安装(New Installs)、会话(Sessions)和已核实的IAP收益(Verified IAP Revenue)。
了解更多有关LiveStream.
##发布说明( Release notes)
与以往一样,若想获得有关新功能、改进与修复的完整列表,请参阅发布说明。
这些就是2017年最后一个Unity版本的所有新功能啦!快点这里开始下载Unity 2017.3吧!~