Draw Calls是什么?
Draw Call仅仅是一条指令。Draw Call指令从CPU传到GPU,渲染一个网格。指令只指向一个被渲染的网格并且不包含任何材质信息。渲染就是在做一个巨大数量的小任务,比如计算成千上万的顶点和在屏幕上绘制以百万计的像素。每个用不同的材料的网格都需要一个单独的Draw call。
那接下来我们用unity本身自带的工具来实现。
首先新建一个项目,导入四张图片。并将其转换成 Sprite精灵。
把四张图片添加到场景中,适当合理布局,运行场景,打开 Game 窗口的 Stats,此时的 Batches为6,由于 Main Camera、平行光 和四张 Sprite的存在,所以为6。
在顶部菜单栏 Window - Sprite Packer,点击打开,由于Unity高版本已经禁用该功能(似乎Sprite Altas 代替),进行设置,使用 Sprite Packer 该功能。
设置为always Enabled
选中四张 Sprite,把他们的 Packing Tag 统一设置为 myTextures(名字随意取),便于后面打包到在一起。
使能Sprite Packer功能之后,再次顶部菜单栏 Window - Sprite Packer,点击打开,点击 pack,即可把四张图打包在一起。
再次运行场景,场景中的游戏物体依然是之前的6个,但是Batches已经变为3了,具体如下图,是由于 Sprite Packer,把四张Sprite图,打包在一起的缘故,如果更多的Sprite打包,性能优化效果更明显。
通过上述介绍,想必大家对游戏的Draw Call优化有了初步的了解,这节课就先上到这里,我们下期再见~