定義
圖集是將很多零碎的2D小圖整合成一張大圖,方便unity渲染合批,降低渲染消耗。
優勢
1.UI的合批處理,減少DrawCall
多張圖片需要多次DrawCall,合並成一張大圖只需要調用一次DrawCall
2.減少對內存的占用
OpenGL每張貼圖都需要設置為2的N次方才能使用,假設有寬高分別為100x100、10x10的兩張圖片,如果不合成大貼圖,那么就需要分別使用128x128和16x16的圖片,會浪費一部分內存空間。
如果是使用一張大圖的話,就可以將兩張圖片打到128x128的圖集,進而減少內存的占用。
3.提升效率
圖片尺寸為2的次冪時,GPU處理起來會快很多,小圖不可能做不到每張圖都是2的次冪的,但打成一張大圖就可以。
圖集整理策略
1.盡量緊湊,大小不要超過512x512
2.Draw Call盡量少,同一個界面的小圖盡量在一個圖集里
3.內存管理方便,加載性能好,打開一個界面時只加載必要的圖集,關閉時可以方便地釋放圖集
4.AssetBundle打包、熱更粒度合理,不能出現“熱更一個新界面,大量圖集都需要熱更”的情況
5.設計UI時要考慮重用性,將邊框、按鈕等共享資源,放在1~3張大圖集中,作為重用圖集;
6.其它非重用UI按照功能模塊進行划分,每個模塊使用1~2張圖集,作為功能圖集;
7.對於部分UI,如果同時用到功能圖集與重用圖集,但是其功能圖集剩下的“空位”較多,則可以將重用圖集中用到的元素單獨拎出來,合入功能圖集中,讓UI只依賴於功能圖集。通過一定的數據冗余,來實現性能的提升;
注意控制圖集的大小,不要讓圖集太大,一個超級大圖集的DrawCall消耗或許頂的上十幾個小圖集的消耗
使用
1.Edit → Project Setting → Editor → Project Settings
→Sprite Packer
三種模式
Disabled表示不啟用它,
Enabled For Builds 表示只有打包的時候才會啟用它,
Always Enabled 表示永遠啟用它。
設置Always Enabled
2.在Assets下的Images文件夾建立一個圖片文件夾test,將集中到圖集的圖片放置到此文件夾中
3.右鍵—>Create–>Sprite Atlas,命名為test
4.選擇Buttons圖集,在Objects for Packing中選擇圖片文件夾test
點擊Pack Previes,圖集建立完成。
