Unity 2018.3正式版功能介绍(2)
我们在Unity 2018.3正式版功能介绍(1)中介绍了Unity 2018.3预制件嵌套、影视相关、地形相关改进。
本文将介绍Unity 2018.3正式版以下功能及改进:
引擎:Visual Studio Code Debugger、PhysX升级到3.4版本、垃圾回收控制等
2D:等距Tilemap、蒙皮编辑器等
粒子:粒子光线支持实时全局光照、External Forces模块更新等
平台:移动平台中Android App Bundle、动态分辨率等;Xbox One 提供了DirectX 12支持;XR平台中AR Foundation更新等
DCC数字内容创作工具:FBX Exporter、物理摄像机等
TextMesh Pro
Unity 2018.3正式版中包含新增45项功能,250项改进,以及1915个Bug修复,查看发行说明了解详情:
https://unity3d.com/unity/whats-new/unity-2018.3.0
下载Unity 2018.3
https://unity3d.com/get-unity/update
引擎更新
1
Visual Studio Code Debugger
我们更新了Visual Studio Code的调试器扩展,Visual Studio Code是一款开源的代码编辑器,可以在macOS,Windows和Linux系统上使用。
Visual Studio Code Debugger for Unity扩展支持在轻量级的环境中对C#脚本进行调试,最新的v2.x版加入了改进,包括对Mono 4.x脚本运行时的支持。
如果你希望使用集成性更强并拥有丰富功能的C#编码和调试环境,可以使用Visual Studio。
了解如何设置Visual Studio Code Debugger:
https://code.visualstudio.com/docs/other/unity
了解如何使用Visual Studio Tools for Unity:
https://docs.microsoft.com/en-us/visualstudio/cross-platform/getting-started-with-visual-studio-tools-for-unity
2
物理功能
PhysX 3.4
在Unity 2018.3中,NVIDIA PhysX升级到3.4版本。此次更新使光线投射,形状扫描和网格烘焙等多项操作的速度加倍。
它还改进对快速旋转对象的碰撞检测支持,加入了强化的结果输出,当所有输入内容一致时,PhysX能产生相同结果。
我们还扩展了C# Job System中 PhysX提供的功能,这允许在主线程外异步使用大部分碰撞体类型,从而在多核硬件上显著提高性能。
PhysX 3.4还提供了稳定性和性能方面的改进。PhysX 3.4现在支持多世界和C# Job查询。
多场景物理
Unity过去只有一个物理场景,该场景会填充来自所有Unity场景的物体和碰撞体。这样做会对很多情况产生限制,所以新版本将允许开发者创建多个物理场景。这项改动让你能指定Unity场景使用默认物理场景或本地场景来处理2D和3D物理效果。
了解详情,请点击阅读:Unity 2018.3中的物理功能改进。
3
垃圾回收控制
Unity 2018.3加入了全新的 UnityEngine.Scripting.GarbageCollector脚本API,用于在全局启用和禁用Mono和IL2CPP脚本后端的运行时垃圾回收功能。
如果仔细管理内存,在运行时有很少或几乎没有内存分配,则可以通过禁用它来避免垃圾回收器的性能开销。当可以承担起性能开销时,可以启用垃圾回收器,并调用System.GC.Collect()来强制进行垃圾回收。
这意味着,垃圾回收过程不会随机发生,我们可以控制它的发生时间。
4
.NET 4.x Equivalent脚本运行时
.NET 4.x Equivalent脚本运行时现在成为了Unity新项目的默认选项。
旧版的脚本运行时即.NET 3.5 Equivalent已经被弃用,并且将在Unity 2019.x发布周期中移除。目前Unity 2018 LTS版仍将支持二种脚本运行时。
如果你还没有在自己的项目中尝试使用.NET 4.x Equivalent脚本运行时,Unity 2018.3中的新功能将是你使用新脚本运行时的最佳理由。例如:在所有支持Mono和IL2CPP的Unity平台上,对所有.NET类库的API提供完整的TLS 1.2支持。
我们在减小项目大小方面做了大量工作。例如:在iOS系统上,使用新版脚本运行时的Unity 2018.3项目的整体构建大小和使用旧版脚本运行时的Unity 2018.2或更早版本的项目大小相差无几。
面向.NET 4.x脚本运行时的项目也支持使用开源的Roslyn编译器,以避免出现此前Mono C#编译器出现的Bug。
5
代码大小
我们在所有平台的Player Settings都包含标准化托管代码移除功能。移除等级(Stripping Level)选项已替换为托管移除等级(Managed Stripping Level)选项。该选项适用于所有平台,以及Mono和IL2CPP脚本后端。
为了帮助开发者尽可能减小游戏大小,我们加入了二个全新托管移除等级选项:Medium中级和High高级。二个新选项只在面向.NET 4.x脚本运行时的情况下可用。
随着我们对IL2CPP进行了托管代码移除的改进和构建大小的改进,面向.NET 4.x运行时的项目大小将和面向旧版.NET 2.0运行时的项目大小差不多。
6
C# 7.3:Roslyn编译器
C# 7.3现在支持面向.NET 4.x脚本运行时的项目,这是因为我们改进了它与开源Roslyn C#编译器的兼容性,从而提供了最新C# 7.3的语言特性,并减少了编译时间。
7
用于重新压缩下载资源包的运行时API
AssetBundle是包含可在运行时加载的特定平台资源,例如:模型、纹理、预制件、音频剪辑以及甚至整个场景的档案文件。
AssetBundle可以减少可下载内容的初始安装大小,确保资源针对最终用户的平台进行优化,并降低运行时内存压力。
Unity 2018.3提供了了一个API,允许开发者创建和管理自己的AssetBundle缓存系统。你可以向客户端提供通过LZMA压缩的AssetBundle,然后客户端将AssetBundle重新压缩为更适合运行的格式LZ4,就像使用我们的原生内置AssetBundle缓存系统一样。
8
寻路系统更新
NavMesh Surface组件表示特定NavMesh Agent类型可以行走的区域,并定义NavMesh应构建的场景位置。
在Unity 2018.3中,寻路系统可以让预制件中的NavMeshSurfaces在预制件模式下独立烘焙。如果要跟踪直线路径或在NavMesh上找到二个位置间的障碍,你现在可以在C# Job中调用NavMeshQuery.Raycast方法。
9
资源上传管线AUP
在Unity 2018.3之前,资源上传管线AUP仅处理纹理。从Unity 2018.3开始,AUP可以加载纹理和网格,但有部分例外情况:可读写纹理、可读写网格和压缩网格不能使用AUP。请注意:Unity 2018.2加入的纹理Mipmap流也使用AUP。
了解更多信息,请阅读:优化加载性能:了解异步上传管线AUP。
10
内存分析器
内存消耗量是关键的性能指标,对于低端移动设备等内存资源有限的平台来说尤为重要。虽然Unity拥有优秀的性能工具,但仍在解决内存相关问题的方面存在不足。找到泄露内存和最大内存分配部分,或寻找问题原因都并不简单。
考虑到这一点,我们希望能够让开发者更容易了解项目中内存的变化。使用新的内存分析器Memory Profiler,你将能够了解所有内存分配的详细信息。
你可以使用它来捕获快照,分析原生内存和托管内存的使用情况,并最终做出有关优化内存使用情况的更好决策。这适用于调查C#和C ++内存,了解不同分配之间的关系,Unity内部分配以及处理内存较少的设备。
最后,您还可以比较快照之间的差异以识别内存泄漏。Memory Profiler在其第一个版本中作为预览版提供,并将不断更新。
2D功能
1
2D等距Tilemap
现在我们可以在Unity 2018.3中基于等距网格布局轻松创建高性能2D环境。
我们可以在二种等距Tilemap类型中进行选择:常规等距Tilemap或Z作为Y的Tilemap。选择Z作为Y的Tilemap时,我们可以在相同瓦片上以不同高度绘制不同的瓦片。例如:绘制带有不同楼层的高层建筑,以及大树或高塔等较高的对象。
下图是布局在等距网格的2D游戏关卡示例。
我们可以选择分组瓦片进行渲染或单独渲染它们。将瓦片分组渲染即Chunk模式可以优化性能。但是,如果希望让游戏对象在瓦片前或瓦片后移动,则可以单独渲染每个瓦片。
开发者可以在GitHub上找到一些实用工具,例如:RuleTiles,以与Tilemaps一起使用。
下载地址:
https://github.com/Unity-Technologies/2d-extras
下图是由Kenney提供的Isometric Dungeon Tiles资源包中的瓦片。
2
2D Animation v2
新版2D Animation系统带来全新的工作流程,并实现对绑定流程进行了更精细的控制。
多精灵功能:在Photoshop中创作角色时,请确保角色的每个肢体处于不同的图层,然后将文件导出为PSB格式,并导入到Unity中。你将需要使用全新的2D PSDImporter资源包。导入后,Unity会自动生成精灵图集。
全新蒙皮编辑器:使用新的蒙皮编辑器窗口可以更精确地定义网格细分和精灵变形,编辑器还对UI和用户体验做了改进。
2D Animation v2资源包和2D PSDImporter资源包将于近期在资源包管理器中发布。
3
Animation
我们对Animator添加了多项赶紧,包括:运行时代码不会进行分配,支持批处理C# Job,从而使性能提高了10~20%。
粒子系统
下面为大家详细介绍,Unity 2018.3中对粒子系统加入了大量改进和新功能。
通过使用offset参数设置和获取粒子
我们改进了粒子系统的脚本API,加入新的可选参数offset。该参数可以让你获取或设置整个粒子数组中的子区域。
粒子光线现在支持实时全局光照
当通过光照模块发射光线时,光线可以改变场景的实时全局光照。只需配置Light Prefab光线预制件,你可以像调整其它光线一样改变全局光照。
翻转粒子系统的网格
现在可以使用翻转选项来翻转粒子网格和公告牌。我们还将Flip U/V选项从Texture Sheet Animation模块移动到了Renderer模块。
排序网格形状的发射
类似程序化形状支持非随机发射的方法,现在网格可以通过可预测顺序生成粒子。对于圆形等程序化形状,粒子会围绕形状边缘递增地生成。网格也会使用相同的方法,但是网格中顶点或表面的顺序决定了生成顺序。
禁用滚动(VR)
我们在Renderer模块中新增了一个复选框,可以阻止面向摄像机的粒子随着摄像机一起滚动。这对于VR应用程序特别实用,如果没有此功能,当用户倾斜头部时,粒子会有奇怪的行为。
爆炸的随机性
为了创建更为无法预测的粒子爆炸效果,现在你可以定义不触发爆炸的随机可能性。
粒子标准着色器成为新的默认设置
在Unity 2018.3创建新粒子系统时,默认情况下将设置无光粒子标准着色器(Unlit Particle Standard Shader),所有旧版着色器都移动到了Legacy菜单中。
Ringbuffer模式
全新的Ringbuffer模式可以通过在粒子生命周期结束后,保持粒子可见性直到粒子被替换,从而帮助开发者更轻松地制作脚印和弹孔等持续效果。
在新模式中,你可以根据需要使用二种循环模式配置粒子,这样可以创建发光余烬等效果,在效果被替换前会持续播放效果,同时保持整体的性能预算。
新的Texture Sheet Animation模式
Unity 2018.3的Texture Sheet Animation模块添加了二种新模式。
第一种模式会以固定每秒帧数播放动画。
第二种模式基于粒子速度,会根据每个粒子的移动速度从动画选取帧。
External Forces模块更新
我们在Unity 2018.3改进了External Forces模块,它引入了全新的ParticleSystemForceField组件,该组件能够与粒子系统交互,给粒子施加各类作用力。
阴影偏差
粒子公告牌,线段和尾迹都很容易受到自阴影问题的影响,因为它们通过面向2D摄像机的几何体伪造出3D对象。
为了解决该问题,我们对每个组件加入了新的阴影偏差选项,让你移开阴影远离对象,以防止不正确的自阴影。
子发射器的Ratio属性
Unity中的子发射器现在拥有一个新属性Ratio,该属性决定触发子发射器事件的可能性。Ratio为1时,子发射器会在触发时发射粒子。
Ratio为0时,子发射器无论如何都不会发射粒子。通过将Ratio值设为0~1之间,你可以对子发射器事件指定随机的可能性。
剔除
Unity 2018.3引入了一种控制粒子系统在屏幕外发生行为的方法。此前版本会对暂停或继续模拟粒子系统自动做出决策,有时这样会造成性能峰值,或因为模拟屏幕外的效果而浪费性能。新的剔除模式(Culling Mode)选项能让你更好地掌控这一情况,并作出更好的决策。
非均匀缩放
我们修复了阻止非均匀缩放功能正常工作的Bug。现在可以使用非均匀缩放功能,处理本地空间或世界空间对齐的粒子,并获得可预测的结果。
旧粒子系统的移除
为了专注于开发新功能,在Unity 2018.1,我们通过移除旧粒子系统的脚本绑定来开始逐步移除旧粒子系统,Unity 2018.3完全移除了旧粒子系统。
如果这项改动对你的项目造成了影响,你可以使用旧粒子系统更新器(Legacy Particle System Updater)工具将旧粒子系统转换为粒子系统组件。
了解粒子系统转换:
https://forum.unity.com/threads/release-legacy-particle-system-updater.510879/
平台
1
移动平台
下面为大家介绍Unity 2018.3种对移动平台的改进。
Android App Bundle
Android App Bundle是Google Play全新的应用发布格式,包含游戏中所有已编译的代码和资源,但它会推迟APK生成和Google Play签名。
Google Play的新版应用服务模型Dynamic Delivery,它会使应用程序包根据用户的设备配置来生成并提供优化过的APK文件,因此用户只需下载运行应用所需的代码和资源即可。
开发者不再需要构建、签名并管理多个APK来为多个不同设备提供支持,而用户则能下载到更小的优化过的文件。
移动平台的动态分辨率(适用于iOS和Android)
Unity 2018.3针对iOS/tvOS (Metal)和Android (Vulkan)加入了Dynamic Resolution动态分辨率功能,该功能可以动态缩放部分或全部渲染目标,以减少GPU上的工作负载。
当性能数据提示游戏将因受GPU限制而降低帧率时,该功能会自动触发。在这种情况下,逐渐减小分辨率有助于保持稳定的帧率。当用户即将体验游戏的GPU密集型部分时,也可以手动触发该功能。
Android运行时权限
在Android 6(API级别为23)或更高版本中,Android.Permission API允许开发者在运行时请求权限,例如:需要使用摄像机、麦克风或位置等系统功能时进行请求,而不是在应用程序启动的时候。
你可以检查授权情况,并在Android系统权限对话框出现前,显示一条信息来说明请求权限的原因。
和Unity一起安装的OpenJDK
Unity现在会默认安装基于OpenJDK的Java开发工具包,确保你获得正确的JDK版本。
2
主机平台
适用于Xbox One的DirectX 12
在Unity 2018.3中,我们为Xbox One 提供了DirectX 12支持。
DirectX 12是一种新的图形API,可以减少驱动程序的开销,并能够更好地使用多核系统。DX12将带来显著的性能提升,具体效果因游戏而异。例如:在《死者之书》演示项目中,我们将帧率提升了8.72%。
目前,这项功能仅为实验性质,由开发者自行决定是否启用,我们将后续分享更多详细信息。
3
XR
对Daydream控制器的原生支持
此次更新通过Input Manager输入管理器,为Daydream控制器的跟踪和按钮输入加入了原生支持。了解Unity 2018.3中多平台VR功能,请阅读:Unity 2018.3中多平台VR功能。
VR控制器的Haptics API
我们现在提供用于触发触觉的API,适用于Windows Mixed Reality头戴设备控制器,OpenVR的Vive控制器和Oculus Touch控制器。我们会在未来版本中继续扩展平台支持。
AR Foundation更新
我们最近为AR Foundation和其它XR资源包加入了重大更新。
第一项功能,你可以通过在利用AR Foundation构建的ARCore和ARKit应用程序中使用轻量级渲染管线,来更好地控制渲染效果。
第二项新功能是一组优化的摄像机图像API集合,允许你高效地访问CPU的摄像机图像。对于希望在自定义计算机视觉算法等开发内容定制图像处理过程的开发人员来说,该功能是理想的选择。
最后我们实现了对ARKit的ARWorldMap功能的支持,以便分享会话信息。
XR性能测试
我们最近新增了帮助开发者测试XR项目的GitHub库。Automated Tests测试包中包含功能性,性能以及其它类型的自动化测试,可用于你的Unity XR开发。
你可以使用Acceptance Tests项目来验证Unity配置的行为,对比不同Unity版本的功能,并通过测试了解性能的变化。
访问Acceptance Tests项目:
https://github.com/Unity-Technologies/XRAutomatedTests
TextMesh Pro
Unity 2018.3的TextMesh Pro是验证过的资源包,它加入了高度优化的Font Generator字体生成器,可在运行时生成字形。
你可以通过调用混合动态字体系统(Hybrid Dynamic Font System)来结合项目中的静态字体资源和动态字体资源。
DCC数字内容创作工具
1
FBX Exporter
FBX Exporter在Unity 2017.2推出,如今成为了已验证资源包,可通过Unity 2018.3的资源包管理器获取。你可以使用该工具轻松地将几何体发送到任何支持FBX格式的应用程序,处理后再返回发送回来。
2
物理摄像机
我们在现有Unity摄像机系统的基础上提供了新的物理摄像机模式。新模式基于焦距和传感器尺寸渲染画面,而不是视图控制的垂直视场,这使得电影摄影师和艺术家更熟练地使用物理摄像机。它还支持更自然的镜头效果,例如:晕影,色差和光晕。
3
SRP的Autodesk交互式着色器支持
我们使用Shader Graph着色器视图创建了“Autodesk Interactive”着色器资源,用于支持此前的粗糙度设置。
请注意,Autodesk交互式着色器以前在Autodesk Maya和Autodesk 3ds Max称为Stingray PBS着色器。
小结
我们将在下一篇中介绍Unity 2018.3正式版中图形功能,包括:特效工具、光照、SRP可渲染管线、Shader Graph着色器视图等更新,尽请期待.
更多Unity最新功能介绍,尽在Unity官方中文论坛(UnityChina.cn)!
推荐阅读
官方活动
我们将邀请活动期间成功订阅Unity的新用户参与Unity的圣诞派对,共庆年终圣诞季!
了解Unity订阅活动详情,请点击此处。
Asset Store资源商店扫货末班车
2018年末,我们准备了最后一辆扫货末班车,133个顶级好评资源,限时5折特惠出售!
活动时间:截至2019年1月1日
活动链接:https://assetstore.unity.com/search?q=on_sale:yes
点击“阅读原文”访问Unity官方中文论坛