《Unity游戏优化》笔记(9)[21/02/10_周三][P116_120_第4章]

目录

4.3 网格和动画文件 (P116)

4.3.1 减少多边形数量

4.3.2 调整网格压缩

4.3.3 恰当使用Read-Write Enabled

4.3.4 考虑烘焙动画

4.3.5 合并网格

4.4 Asset Bundle和Resource (P119)

4.5 本章小结 (P120)


4.3 网格和动画文件 (P116)

网格和动画文件其实是顶点和蒙皮骨骼数据的大型数组,可以应用各种技术最小化文件大小,同时使其外观相似,却不完全相同。也有一些方式可以通过批处理技术降低渲染大量的这类对象组的成本

4.3.1 减少多边形数量

减少多边形是简单、直接的,我们经常可以在现代网格上去掉很多顶点,而大多数用户无法分辨出它们之间的区别。

4.3.2 调整网格压缩

4种压缩设置:Off、Low、Medium和Hign。增加此设置将把浮点数据转换为固定值,降低顶点位置/法线方向的精度,简化顶点颜色等。这对包含许多彼此关联的小部件(比如栅栏或格栅)的网格有明显的影响。如果通过程序生成网格,就可以通过调用MeshRenderer组件的Optimizer()方法来实现相同类型的压缩。

Edit|Project Settings|Player|Other Settings中也有两个全局设置:Vertex Compression和Optimize Mesh Data。

在每种情况下,这样做的好处是减少了应用程序的磁盘占用,却要花费额外的时间来加载网格,因为在需要数据之前必须花费额外的时间解压数据。

3D网格构建工具提供自己的自动网格优化的内置方法。

4.3.3 恰当使用Read-Write Enabled

Read-Write Enabled标志意味着把原始网格数据保存在内存中,知道我们向他复制它并动态进行更改。

4.3.4 考虑烘焙动画

需要通过当前使用的3D建模工具修改资产。

4.3.5 合并网格

将网格强力地合并成单个的大型网格,便于减少DrawCall,特别是当网格对于动态批处理来说太大,不能与其他静态批处理组很好地配合时。这本质上等同于静态批处理,但它是手动执行的,所以,如果静态批处理可以处理这个过程,我们就不必浪费精力了。

注意,如果网格的任何单个顶点在场景中可见,那么整个对象将作为一个整体进行渲染。如果网格在大部分时间里只部分可见,这将浪费大量的处理时间。这种技术也有去电,它生成了一个全新的网格资产文件,必须将其保存到场景中,这意味着对原始网格缩做的任何更改都不会反映在的网格中。每次需要进行更改时,都会导致大量烦琐的工作流工作,因此,如果可以选择静态批处理,就应该使用它。

网格上有一些工具,能用于在Unity中合并网格文件。可以在Asset Store或Google搜索到它们。

4.4 Asset Bundle和Resource (P119)

Resource System在原型建立 阶段和项目的早期阶段很有益处,也能在有限范围的游戏中相当高效地使用。

然而,专业的Unity项目应该支持AssetBundleSystem。原因有很多。

首先,当涉及构建是,ResourceSystem的可伸缩性不是很大。所有资源都合并到一个大型序列化文件二进制数据blob中,其中包含一个索引列表,列出了可以在其中找到的各种资产。向列表中添加更多的数据时,这可能很难管理,并且需要很长时间来构建。

其次,ResourceSystem以Nlog(N)的方式从序列化文件中获取数据,所以需要警惕N的值。再次,Resource System使应用程序难以基于每个设备提供不同的素材数据,而AssetBundle很容易实现这一点。

最后,AssetBundle可用于为应用程序提供小型的,定期的自定义内容更新,而Resource System需要完全替换整个应该程序,才能达到相同的效果。

Asset Bundle和Resource拥有许多相同的功能,比如从文件中加载,异步加载数据和卸载不再需要的数据。然而,AssertBundle还提供了更多的功能,如内容流式传输、内容更新、内容生成和共享。这些都可以极大地提高应用程序的性能。可以提供磁盘空间占用更小的应用程序,让用户在开始游戏之前或游戏运行过程中下载额外的内容,在运行时流式传输素材,以最小化应用程序的首次加载时间,基于每个平台提供更优化的素材,而不是给用户推送完整的应用程序。

AssetBundle的建立和维护比Resource更复杂,理解起来也更复杂,因为它使用比ResourceSystem更复杂的系统来访问资产数据。最好只有当团队的规模能够支持所需的额外工作负载时,才使用AssetBundle。

https://blogs.unity3d.com/2017/04/12/asset-bundles-vs-resources-a-memory-showdown/

4.5 本章小结 (P120)

可以仅修改导入的资产来提升应用程序的性能,资产管理不善会在许多方面损害应用程序的性能。几乎每个导入的配置都是两个性能指标或工作流任务之间的权衡。通过压缩来节省磁盘占用空间,代价是运行时CPU要解压数据,或者加快访问速度,但会降低效果的质量水平。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值