达哥教你如何正确打开 Unity 2019 LTS
大家好,我是达哥。希望大家都开发顺利也保持健康!
在文章开始之前,也可以看看我录的Unity 2019 LTS长期支持版的亮点功能说明。此外我还特别录了个“彩蛋”给大家,想要看完整版视频的各位进入B站搜索“Unity官方”就可以看到啦~
长期维护的意思是如果在2019.2找到了一个Bug,Unity会修复的版本是2019.2本身和2019.4,也有可能只会在2019.4修复,其他版本不会修复。主要这么做可以让问题的修复集中在.4管理,提升LTS版本的稳定性,对开发项目也比较友善。
决定要用哪一年的LTS当然就跟项目时程估算很有关联,如果你的项目预估在2021年1月完成,那发布时的LTS版本就建议是2019 LTS,因为2020 LTS还没出来。所以如果项目完成预计在2021年12月,当然目标就是2020 LTS
要注意的是,现在的LTS版本都会落在5, 6月左右发布,主要原因是Unity每年更新周期有4版,也就是.1.2 .3 .4LTS,我们预期在下个周期开始,将改为.1 .2 .3LTS周期,未来期望新年度版号在Q1就进版。
接下来细聊到底2019.4有哪些强化,除了了解有哪些新功能之外,也可以作为评估是否要升级的参考。
从这个表可以看出,2019.4 LTS改进的部分还是挺多的,我们一个一个来细看。
版本控制(Version Control)体验改良
大型项目的版本控制至关重要,如果你是用Github,特别是Perforce做版本控制,2019LTS改进许多UIUX体验,现在Perforce断线时会自动连回了。
Asset Import Pipeline V2
资源导入流程以往需要耗费大量时间等待,随着项目越大越复杂,等待的時間就越長。2019 LTS,导入流程已升级到第2版,它与新的Accelerator(新的本地缓存服务)一起用为更可靠,总之结合起来,这将显着加快平台切换和导入时间。
Nvidia PhysX 升级到 4.1
非DOTS的物理运算用PhysX能更精确、更快更可靠。尤其在布料模拟采用了新的NvCloth技术,能够得到更好的效果。针对DOTS框架的物理也可以研究Havok或Unity的DOTS兼容物理系统。
IDE支持
程序员应该会对此感到开心,2019LTS版的默认集成开发环境更新为Visual Studio 2019了。而且我们将其他家的IDE开发环境,像是VisualStudio, VS Code, JetBrains Rider都移到Packagemanager方便安装管理了。
增量式GC(IncrementalGarbage Collector)
新的增量式GC通过在多个框架上分配工作负载,这意味着增量式GC的执行会更频繁但更快的中断,进而降低因为处理GC造成性能尖峰,当然就降低了卡顿的机率。
console 窗口提升
Console菜单的堆现在可以点击,并转到发生问题的代码位置,这会让调适更容易。
DOTS 的准备
虽说2019LTS的DOTS(数据导向堆栈框架仍然是预览版,但是它已经支持了DOTS的动画、物理、网络机制和实时调适(Live Link)功能,如果你不能升2020但又希望研究DOTS,就从2019LTS开始研究吧。
值得一提的是,DOTS体系内的Burst编译程序倒是从预览版转为正式版了,对于Job System能直接给予非常明显的性能优化效果。
编辑器代码的 TypeCache API
以往我们点选Play的时候,其中一个很耗时的C#处理是查找Unity套件或是用户自定义工具会使用到的C#属性。通过API緩存这些類别信息,将使调用播放的速度变快。
Enter Play Mode option
除了用代码优化播放速度,本身Unity每次按Play也都是重新加载场景,如果每天你要按play一百次,相当于浪费了一半的时间在运行重复加载的行为。你可以从Project Settings > Editor内找到Enter play Mode选项,设置不用每次play都重新加载场景而是使用快取,在大量小型修改的情况开发效率能提升2倍以上。
脚本式打包管线 (Scriptable Build Pipeline)
可以自定义打包流程。SBP相当于把原本C++层的打包流改为C#,并自带一个预先定义好的Asset Bundle打包流,能降低打包的时间。对于每天有非常多打包工作的团队来说,定义自己项目的打包流程甚至是Asset Bundles的增量打包管理都将会方便许多。
Serialization 改良
新的SerializeReference属性可以将C#類串行化为引用(references)类别而非值(values),这意味着您可以跟普通的旧C#对象相互引用,进而简化了代码表示和管理复杂的数据结构。例如,List <IAnimal>的内容可以包含dogs(class Dog:IAnimal {})和cats(class Cat:IAnimal {}。标记为要串行化的字段现在可以表示null值。在以前,序列化带有null值的字段会引发该类型的默认构造函数对其进行反串行化。
更多信息请到以下链接查看:
https://docs.unity3d.com/ScriptReference/SerializeReference.html
.Net 4.x
.Net 3.5的运行核心已经从LTS移除,任何采用3.5的项目都会自动改为4.x。如果因为任何原因必须使用3.5,可以改用2018 LTS。
IL2CPP 改良
整体性能提升20%,Script debugging选项开启时,运行性能更好。
Input System
游戏操作设计系统整个被重新设计了,新的输入设计观念改为先设计主要游戏操作玩法(比如上下左右移动),然后绑定逻辑到各种不同的平台控制器,比如PC, XBOX, PS5,移动平台触控和VR设备也都考虑在内了,简单来说就是手柄按钮设计一次,发布对应不同平台。
Profiler 改良
调适窗口现在能看到更多的调适信息,现在可以在配置设置想要一次看到的调适帧数300至2000帧。在打包窗口或BuildPlayer API中为所有Player启用深度分析支持(Deepprofiling),此外,用户还可以为指定Player动态打开或关闭深度分析。禁用深度分析时,分析数据时就不会有Deep Profiler挂接到Player所引起的额外开销。
AR Foundation
AR Foundation解决了两个主要问题:不同平台要重复设计元素。AR Foundation就好像Unity一样针对AR项目提供一次开发,自由发布的概念。如果某个功能在一个平台上可用,而在另一个平台上不可用,跨平台开发将会变得很麻烦。AR Foundation利用他中继层的优势,可以轻易的对每个平台功能做适配,不需要重建项目。
URP/HDRP 支持 VR
HDRP何时支持VR一直是最常被问的问题,2019 LTS的HDRP已经开始支持VR了。
XR Plug-in Framework
如果你是一个XR设备制造商,那这对你绝对是好消息。以往你必须自行撰写For Unity的SDK,现在通过了XR Plug-in框架就能轻易集成到Unity里,连同跨平台都一并解决了。此外,Unity编辑器内也多了XR套件管理(XR Plug-inManagerment”设置,未来启用不同的XR设备会变得容易许多。
Optimized Frame Pacing forAndroid
这是Unity与Google的Android游戏和图形团队合作开发工具包,可以使Android设备的帧分配的差异较小,从而提供一致的帧率和更流畅的游戏体验。
Scripts-Only BuildPatching (Android)
针对Android平台制作自定义增量包的工具,大大降低迭代时间。此工具只持Android。
Android Logcat 集成
集成从Android来的调适信息到Unity编辑器,可以直接在Unity内查找问题。
Android App Bundle 的 APK 大小检查
AndroidApp Bundle是Android在Google Play发布的工具,它提供了一种更有效的方式来构建并发布应用。让你更轻松包出较小的包,提高安装成功率和减少卸除。APK大小检查可在打包过程完成后立即查看,包含APK的组成和APK的大小。
请求式渲染 (On-demand rendering)
当你等待其他玩家加入游戏时,屏幕上通常什么也没有发生。通过这个功能就能让这种情况发生时放慢渲染速度节省帧速率,从而节省了用户的电量与提升性能。
Mobile notifications
手机推播通知是很多人询问的一个功能,以往都是通过第三方套件来实现,现在Unity也可以做推播功能了喔。
一系列的2D工具转正版
- 2D Sprite Shape, 2D TilemapEditor方便建构2D世界
- 2D Animation建构平顺的2D骨架动画
- 2D PSD Importer和2D Pixel Perfect提供稳定的像素质量
- Lost Crypt 2D展示工程兼容2019LTS
Camera Stacking
现在SRP支持多镜头合成一个画面了。
自定义渲染通道 (Custom Render Passes)
2019 LTS現在可以制作自定义的渲染流器,发送渲染信息到自定义的渲染通道来实现风格化渲染器或是Forward+ / Tile / Clustered渲染。这样可以基于Unity的渲染注入自定义的渲染,来个画风突变。
HDRP 亮点改进
Arbitrary OutputVariables(AOV) API,支持只导出场景内的材质属性、光照数据、深度信息。
动态分辨率在硬件的支持下,实现实时改变画面分辨率并保有良好的游戏体验。
Madcat調試监看模式用简单的环境纹理替换对象的材质和照明。此模式对导航和获得场景感很有用,无需设置场景照明。
HDRP PostProcessing
現在后期特效已集成在HDRP中,加快工作流程和性能。可以使用一组标准物理设置(焦距,光圈等)来控制诸如景深或曝光等效果。对比度自适应锐化(CAS)放大效果。
脚本话渲染管线批处理器
(Scriptable Render PipelineBatcher)
SRP批处理器是一套为SRP所订制的渲染循环,通过使用相同着色器变体的许多材质来加快场景中的CPU渲染速度。并将图形绘制到屏幕的过程。
支持平台目前有:Windows DirectX 11,Vulkan,OSX Metal,iOS Metal,OpenGL 4.2及更高版本,Open GL 4.2及更高版本,Windows DirectX12,PlaStation 4,Xbox One DirectX 12,Nintendo Switch。
HDRP 针对 Shader Graph 的改良
Render States现在改到Shader Graph里的Material里,意味着现在可以在一个材质球上直接指定为不透明(opaque)或透明(transparent)。
加入了新的Hair Master Node,未来制作毛发相关的Shader将会更得心应手。
Shadow Layers
现在Light Layers系统的Shadow Layers选项允许你将阴影与照明分离。在Shadow Map设置中启用此功能后,游戏对象即使在看不到光线的情况下也可以投射阴影,反之亦然。您还可以使用Shadow Tint更改阴影颜色。
VFG with SG
现在你可以在Visual Effect Graph里面集成Shader Graph的着色结果,实现更直观的效果。
新的地形工具
Unity重写了新的地形工具,大量的新功能包含地形绘制工具、地形纹理绘制。
全新的地形制作工作流能在绘制地形时,也实时对光照、物理甚至导航直接产生运算。
GPU 烘焙光照
烘焙质量更好、支持对环境照明的多重采样、支持NVIDIA OptiX降噪、整体采样性能提升。
环境多重重点采样
(Multiple ImportanceSampling)
一种在Cubemap/HDRI中针对重点区域采样的新方法,采用这种技術可以避免将大量GI射线发射到全区域,而是将它们聚焦在例如亮点的重点区域(例如太阳)。
以往加载场景时Light Probes是无法合并的,2019 LTS开始,加载的场景之间合并LightProbes已经实现。意味着将大型场景拆成许多小场景,动态加载并合併所有探針并重新网格化,就可以实现無縫地图了。
快速查找 (Quick Search)
现在可以在编辑器内快速查找所有关键词对象,这会关联到对象、资源、设定、选单对象甚至脚本。
Presets 管理
Preset可以储存当前对象设置,并在套用在其他对象上,遇到有大量对象设置复制转移需求的状况非常好用。
快捷键管理 (Shortcut Manager)
现在可以自定义Unity编辑器内的快捷键了。
Prefab 编辑
以前编修Prefab对象必须进入编修模式,现在可以直接在Inspector窗口直接编修Prefab对象了。
UI Builder
UI Builder是一套能在Unity内不用写代码,通过拖拉制作出UI的工具,他是针对Unity编辑器的工具,并不适用于游戏UI。
Package Manager 一些改动
現在你可以在Package Manager内加入存在GIT上的套件,通过URL连结来直接安装到Unity,很适合用来制作公司内部工具套件。
现在也可以通过PackageManager来统一管理你的AssetStore购买的资源,整体体验改善很多。
调适分析器 (Profiler Analyzer)
Profile Analyzer可以汇总并可视化来自一组Unity Profiler的数据,多个不同帧的信息比对,以帮助你从更广的角度找出性能问题。
以上就是Unity 2019 LTS的亮点整理,这么多的改动,只为了给开发者一个良好的开发工具,协助你获得成功。
感谢这些年支持Unity的开发者们,希望你们都能开发顺利!