Unity4.6 UGUI 圖片打包設置(小圖打包成圖集 SpritePacker)


 

 

在學習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是一張不同的圖片

 


 

 


 

喜聞樂見的7個Drawcall,7個圖片就7個Drawcall,嗯,老板讓我明天滾蛋了。

 


 

然后我們來看下如何打開Unity自帶的自動的圖集打包。

 


 

首先,Unity默認是在編輯器環境下不打開圖集打包工具的,只有在Build的時候才會執行自動打包圖集。

 


 

Edit - Project Setting - Editor

 

默認為下圖設置:

 


 

 


 

我們修改為:

 

 


 

一直啟用Sprite Packer,這樣我們在編輯器環境下也可以使用自動打包圖集。

 

再來運行看下:

 


 


 

嗯?還是7個Drawcall,Unity 坑我們?

 


 

其實不是,仔細再想下,上面提到了 Packing Tag 這個參數,是么有設置的。

 

 


 

既然沒有設置 Packing Tag,那Unity應該不知道怎么去打包圖集……,因為沒有名字嘛。

 


 

我們給這7個圖片設置一個名字,例如 test,然后保存Apply,再次運行測試

 

 


 

為什么有兩個?Unity坑我們呢!!

 


 

其實不是,是因為這7張圖片,有一張圖片我放到了 Resources文件夾里面,上面就說道,Resources中的圖片Unity是不會打包的哦!

 


 

那么Unity把我們的小圖片打包到哪里去了,找不到呀,被吃了嗎?我想再看一眼效果怎么辦!

 


 

在Unity菜單的Window中有一個 Sprite Packer,我們打開它

 


 

 


 

在這里就可以看到打包的圖集。

 


 

左邊紅框是圖集名字,也就是我們設置的 Packing Tag 。

 

第二個是打包的方式,默認打包,還有一種是緊湊型打包 ,兩種方式沒啥大區別。上面這7張圖片用Texturepacker打包后只有512x512大小,但是用Unity的Sprite Packer打包后是1024x512 ……這讓人很不解。

 

 

 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM