Unity开发之路上的那些坑(一)2D Sprite占用的Batches问题

前言

『Unity开发之路上的那些坑』这个系列将会记录我在Unity游戏开发上遇到的那些坑和解决办法。

一、问题概述:相同的2D Sprite 却重复占用Batches


应用场景

我们的手游项目上要重建一个城市的面貌,其中不可缺的就是树木、路灯等装饰物,为了达到美观和省资源的目的,我们选择了使用2D Sprite代替3D模型的方法。

看上去很像是3D的吧?
其实是障眼法

本以为是节省资源的做法,最终却发现CPU占用率非常高。后来发现是因为Batches数量太多,上图的每一个树木2D Sprite都占用了一个Batch!按常理来说,多个相同的物体(静态)会被Unity优化为只占用一个Batch,然而2D Sprite却没有。明显是相同的东西却不能批处理实在奇怪。

二、解决办法 :图集下的2D Sprite才能批处理

1、点击你导入的图片文件,进入Inspector界面
Inspector
2、如上图所示将Sprite Mode改为Multiple,packing tag随便写,点击Apply应用。
3、好了,现在你会发现这张图片无法拖进场景了(如果是在拖拽进场景后再设为Multiple的话场景中图片会消失)
应用后
4、接下来点击Inspector界面中的Sprite Editor
Inspector界面
5、Sprite Editor界面,然后点击左上角的Slice按钮
Sprite Editor
6、再点击Slice
Sprite Editor
7、会多了一个灰色的框
Sprite Editor
8、选择这个框,点击左上角的Trim,应用
Sprite Editor
9、然后就多了右边这个tree22_0,这个文件就是我们要拖到场景中的2D Sprite,无论场景中有多少个这个Sprite都只占用一个Batch。问题解决。
project

推荐阅读更多精彩内容