UGUI-- 图集制作
1、為什么要打圖集
UGUI與NGUI使用上最大的不同是,NGUI使用前就要打圖集,UGUI可以在之后再打圖集
打圖集的目的就是減少DrawCall,提高性能。
簡單來說,DrawCall(DC)就是CPU通知GPU進行一次渲染的命令,如果DC次數較多會導致游戲卡頓,我們可以通過打圖集,將小圖合并成大圖,將本應n次的DC變成1次DC來提高性能
2、在Unity中打開自帶的打圖集功能
在工程設置面板中打開功能
Edit->Project Setting->Editor-> Sprite Packer(精靈包裝器,可以通過Unity自帶圖集工具生成圖集)
| Disabled | 默認設置,不會打包圖集 |
| Enabled For Build (Legacy Sprite Packer) | Unity僅在構建時打包圖集,在編輯模式下不會打包圖集 |
| Always Enable (Legacy Sprite Packer) | Unity在構建時打包圖集,在編輯模式下運行前會打包圖集 |
| Enabled For Build | Unity在構建時打包圖集,在編輯器模式下不會打包 |
| Always Enabled | Unity在構建時打包圖集,在編輯模式下運行前會打包圖集? |
Legacy Sprite Packer傳統打包模式,相對下面兩種模式來說,多了一個設置圖片之間的間隔距離,有一個參數:
——Padding Power:選擇打包算法在計算打包的精靈之間以及精靈和生成的圖集邊緣之間的間隔距離,這里的數字代表2的n次方
但是在新版的Unity中,相關設置不同,分別是:
- Sprite Atlas V1- Enabled For Builds;
- Sprite Atlas V1- Always Enabled;
- Sprite Atlas V2(Experimental)?Enabled;
3、打圖集參數注意
圖集創建:新建Sprite Atlas(新的版本在2D子目錄中)
在UI中如果需要打圖集,一般需要將Allow Rotation與Tight Packing勾選去掉
然后在Objects for Packing中將需要打包的圖集進行關聯,Pack Preview,之后每次加載新圖片都從圖集中批處理一次性加載,減少DC次數,否則每次加載新圖片都要DC(重復的圖片不會增加DC次數)
注意:如果在相同圖集的關聯圖片之間插入一個不同圖集中的圖片/Text(即在Hierarchy中相鄰順序的圖集元素之間插入,例如A,B,C在同一圖集,D插入B,C之間)并且與圖集中的相應圖片重疊(D與C重疊),那么圖集的批處理會中斷,打斷渲染順序,增加DC次數。
創建圖集后只有在運行模式中才會生效,在編輯模式中Batches和以前不會有任何變化
如何觀察DC的次數:
Game窗口的Stats->Batches
4、代碼加載
// 加載圖集,參數為圖集名 SpriteAtlas sa = Resources.Load<SpriteAtlas>("myAtlas"); // 從圖集中加載指定名稱的小圖,可以為某些Image賦值加載 sa.GetSprite("bk");總結
以上是生活随笔為你收集整理的UGUI-- 图集制作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图说卡尔曼滤波(正在进行时)
- 下一篇: 什么是线程循环发包 ?