在学习UGUI的过程中,一直使用小图也就是散图,一个按钮一个图片,一个图标一个图片,这样每一个图片都有一个Drawcall。

 

之前公司的游戏都是使用Unity4.3+NGUI,在NGUI中可以使用Texturepacker,先把小图片打包成一张大图,然后在NGUI中设置引用大图中的哪一块作为图片,这样能减少很多Drawcall。

 

但是在UGUI中没有办法使用Texturepacker了,也迷糊了几天。

 

之后一直在百度谷歌寻找,才发现原来Unity4.6中自带了图集打包工具SpritePacker。

 


 

在Unity4.6中,我们把一张图片拖入到Project中,可以设置它的用途,是Texture还是作为2DUI使用。而且注意到多了一个 Packing Tag的设置项。这个设置项就是设置小图打包成大图后的atlas的名称!

 


 

注意:

 

放在Resources中的图片,Unity不会打包到图集中!

 


 

来看下面的实例:

 

我在界面中放了7个image,每个image是一张不同的图片

 


 

Unity4.6 UGUI 图片打包设置(小图打包成图集 SpritePacker)

 


 

喜闻乐见的7个Drawcall,7个图片就7个Drawcall,嗯,老板让我明天滚蛋了。

 


 

然后我们来看下如何打开Unity自带的自动的图集打包。

 


 

首先,Unity默认是在编辑器环境下不打开图集打包工具的,只有在Build的时候才会执行自动打包图集。

 


 

Edit - Project Setting - Editor

 

默认为下图设置:

 


 

Unity4.6 UGUI 图片打包设置(小图打包成图集 SpritePacker)

 


 

我们修改为:

 

Unity4.6 UGUI 图片打包设置(小图打包成图集 SpritePacker)

 


 

一直启用Sprite Packer,这样我们在编辑器环境下也可以使用自动打包图集。

 

再来运行看下:

 

Unity4.6 UGUI 图片打包设置(小图打包成图集 SpritePacker)

 


 

嗯?还是7个Drawcall,Unity 坑我们?

 


 

其实不是,仔细再想下,上面提到了 Packing Tag 这个参数,是么有设置的。

 

Unity4.6 UGUI 图片打包设置(小图打包成图集 SpritePacker)

 


 

既然没有设置 Packing Tag,那Unity应该不知道怎么去打包图集……,因为没有名字嘛。

 


 

我们给这7个图片设置一个名字,例如 test,然后保存Apply,再次运行测试

 

Unity4.6 UGUI 图片打包设置(小图打包成图集 SpritePacker)

 


 

为什么有两个?Unity坑我们呢!!

 


 

其实不是,是因为这7张图片,有一张图片我放到了 Resources文件夹里面,上面就说道,Resources中的图片Unity是不会打包的哦!

 


 

那么Unity把我们的小图片打包到哪里去了,找不到呀,被吃了吗?我想再看一眼效果怎么办!

 


 

在Unity菜单的Window中有一个 Sprite Packer,我们打开它

 


 

Unity4.6 UGUI 图片打包设置(小图打包成图集 SpritePacker)

 


 

在这里就可以看到打包的图集。

 


 

左边红框是图集名字,也就是我们设置的 Packing Tag 。

 

第二个是打包的方式,默认打包,还有一种是紧凑型打包 ,两种方式没啥大区别。上面这7张图片用Texturepacker打包后只有512x512大小,但是用Unity的Sprite Packer打包后是1024x512 ……这让人很不解。

 

 

Unity4.6 UGUI 图片打包设置(小图打包成图集 SpritePacker)
 
 
 

相关文章:

  • 2021-09-05
  • 2021-04-20
  • 2021-12-31
  • 2022-12-23
  • 2021-08-08
  • 2021-12-25
  • 2021-12-25
  • 2021-12-25
猜你喜欢
  • 2021-04-24
  • 2021-07-21
  • 2022-12-23
  • 2022-01-23
  • 2022-01-21
  • 2021-12-25
  • 2021-12-25
相关资源
相似解决方案