前言
『Unity开发之路上的那些坑』这个系列将会记录我在Unity游戏开发上遇到的那些坑和解决办法。
一、问题概述:相同的2D Sprite 却重复占用Batches
应用场景
我们的手游项目上要重建一个城市的面貌,其中不可缺的就是树木、路灯等装饰物,为了达到美观和省资源的目的,我们选择了使用2D Sprite代替3D模型的方法。


本以为是节省资源的做法,最终却发现CPU占用率非常高。后来发现是因为Batches数量太多,上图的每一个树木2D Sprite都占用了一个Batch!按常理来说,多个相同的物体(静态)会被Unity优化为只占用一个Batch,然而2D Sprite却没有。明显是相同的东西却不能批处理实在奇怪。
二、解决办法 :图集下的2D Sprite才能批处理
1、点击你导入的图片文件,进入Inspector界面

2、如上图所示将Sprite Mode改为Multiple,packing tag随便写,点击Apply应用。
3、好了,现在你会发现这张图片无法拖进场景了(如果是在拖拽进场景后再设为Multiple的话场景中图片会消失)

4、接下来点击Inspector界面中的Sprite Editor

5、Sprite Editor界面,然后点击左上角的Slice按钮

6、再点击Slice

7、会多了一个灰色的框

8、选择这个框,点击左上角的Trim,应用

9、然后就多了右边这个tree22_0,这个文件就是我们要拖到场景中的2D Sprite,无论场景中有多少个这个Sprite都只占用一个Batch。问题解决。

网友评论