查看原文
其他

达哥教你如何正确打开 Unity 2019 LTS

达哥 Unity官方平台 2022-05-07

大家好,我是达哥。希望大家都开发顺利也保持健康!

 

在文章开始之前,也可以看看我录的Unity 2019 LTS长期支持版的亮点功能说明。此外我还特别录了个“彩蛋”给大家,想要看完整版视频的各位进入B站搜索“Unity官方”就可以看到啦~



Unity 2019 LTS已经发布了,趁这个机会,我想要跟各位聊聊这一版LTS的新功能以及具体的LTS版本建议用法。
 
什么是LTS呢?虽然官方有许多文件都有解释过什么是LTS了。但为了有些人还是不明白什么是LTS版本,我还是稍微以我的角度说明一下。
 
所谓的LTS就是当新年度版本开始时(现在是2020.1),把去年的版本号+.1做结尾并改名LTS的版本(这里是2019.4 LTS)。这个2019.4 LTS版本特色是会持续维护长达两年的时间,因此最适合使用这个版本的项目,就是在未来一年准备发布的产品。



长期维护的意思是如果在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与场景加载 

 

 

以往加载场景时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的开发者们,希望你们都能开发顺利!



你 可 能 感 兴 趣


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存