Unity之Optimizing graphics performance前言(三)

写在前面,对于优化,自己都是在工作实践中,别人说什么就是什么,从来没有去认真的学习过这一块的事情,所以这一次通过博客的形式来学习和总结一下,其中肯定有不到之处,望朋友们能指出,并给出建议。谢谢。

一个成功的游戏对良好的性能要求是非常高的。因此Unity在这方面给出了很好的Tips。

游戏的性能主要受到计算机设备的两个方面影响——— CPU 与 GPU
因此首先要找出影响性能的问题在哪,在根据这个问题所反馈的情况,来定位并相应制定优化策略(理想情况下,是针对CPU和GPU同时优化,但是世间万事不能两全其美,往往采取策略是牺牲CPU成全GPU,亦或者牺牲GPU成全CPU)。

一、重点内容针对这个CPU与GPU优化比较常见的问题及检查方法如下:

1. CPU
CPU经常受限于需要渲染的批次(batches)数量。因为CPU每次需要为渲染准备以及收集数据,然后调用GPU图形处理接口,这个过程是相当耗时费力的。
因此Unity 提供了一个非常好用的工具——Statistics Window面板
可以通过 Statistics面板 检查正在渲染的 batches数量,如果数量过高,那么意味着CPU的消耗过高。

2. GPU
GPU往往受限于在渲染时像素的填充率以及现存带宽的使用。
如何来检查并定位Unity给出的针对填充率是这样检查的:
Lower the display resolution and run the game. If a lower display resolution makes the game run faster, you may be limited by fillrate on the GPU.
降低游戏的分辨率然后运行,如果在低分辨率的情况下,游戏的运行非常流畅,那么可能在GPU上受到的像素填充率的影响。
Unity同样也提供了一个很好用的工具,来便于我们进行优化—— FrameDebugger

二、不常见的问题及检查方法:
1. CPU
如果在渲染时CPU需要处理太多的顶点(vertex),情况如处理skinned meshes(蒙皮网格:用于骨骼动画等)、cloth simulation(布料仿真)、particles system(粒子系统)以及一些游戏里面的gameObject网格(Mesh)。
针对于上面的情况,通常在不影响游戏的质量的情况下,尽量保持定点数越低越好,这样才能尽可能的保持CPU的流畅性。针对于此,后面文章会介绍。
2. GPU
如果在渲染时,GPU也要去处理太多的顶点数据(Vetex Data)。
此时在确保游戏的流畅性的情况下,可以接受的顶点数据的总数,取决于GPU性能和顶点着色器(Vertex Shader)的复杂性
为此Unity给出的Tips:
针对于移动设备,尽量当前每帧渲染顶点数不要超过十万个
针对于PC设备,尽管PC设备的性能优于移动设备,也能更好的处理顶点数据,甚至能同时处理几百万个,但是仍然可以通过优化这个,然后仍然可以获得一个非常好的额实际性能效果。
3. Garbage Collection(GC 垃圾回收)或者Physics
如果渲染时,通过检查定位,发现其实影响性能的并非是因为CPU的Batches或者GPU引起的,那么,这个问题可能出GC或者Physics(物理计算)。

综上所述,做一个好的游戏,从码农角度来看,为了保证程序的流畅性,我们要对Unity性能,针对以上几个方面着手,对齐性能去优化,才能给用户最好的体验,同样,才可以使我们的劳动得到更高的价值。

在后面几篇文章中,我会继续贴上自己的学习心得和总结。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值