UGUI图集的理解与使用
什么是圖集?
在使用3D技術開發2D游戲或制作UI時(即使用GPU繪制),都會使用到圖集,而使用CPU渲染的2D游戲和UI則不存在圖集這個概念(比如Flash的原生顯示列表),那么什么是圖集呢?準確的說法圖集是一張包含了多個小圖的大圖和一份記錄了每個小圖id、位置、尺寸等數據的數據文件,一個圖集應該對應兩個文件,當然也有人把數據集成到圖片中,導致看起來只有一張圖片(參考自DragonBones的做法)。
為什么要用圖集?
使用圖集可以說是多加了一個步驟 但是這個步驟不是沒有意義的
他可以有效的減少drawcall的數量,多張圖片需要多個drawcall,而如果我們合成一個大圖 只需要一個drawcall.
減少內存占用:OpenGL ES中每張貼圖都需要設置成2的n次方才能使用。比如你有一張寬高為100x100和一張寬高為10x10的圖片,如果不合成大貼圖,那么需要使用128x128和16x16的兩張圖片(分別是2的7次方和2的4次方),但如果使用一張大圖的話,可以把100x100和10x10的圖片放到128x128的大圖中,這樣就用一張圖片。
?
在GPU已經成為PC、手機等設備的必備組件的現在,把所有顯示的繪制操作交給專門處理圖像的GPU顯然比交給CPU更合適,這樣空閑下來的CPU可以集中力量處理游戲的邏輯運算。
而GPU處理圖像的做法和CPU是不一樣的,在GPU中,我們要繪制一個圖像需要提交圖片(即紋理)到顯存,然后在進行繪制(這個過程稱為一次DrawCall),那么如果我們一幀要繪制100個就需要提交100次圖片,如果使用包含了這100圖片的圖集,只需要一次提交即可,即一次DrawCall就搞定,處理效率上會有很大的提升。
另外使用圖集也方便管理和歸類各個模塊的圖片,可以通過一次加載和一次卸載完成多個圖片的處理,同理,加載次數也下來了,可以提升運行效率。
總結:
Unity2D中的圖集
其實用過NGUI的同學都知道在拼界面之前都必須先制作好對應的圖集才行,然而在Unity2D或UGUI中,Unity卻自己集成了圖集的操作,目的是讓我們忘掉圖集的存在,更加關注設計這個層面。
NGUI是必須先打出圖集然后才能開始做界面。因為始終都要去考慮你的UI圖集。比如圖集會不會超1024 ,圖集該如何來規劃
UGUI的原理則是,讓開發者徹底模糊圖集的概念,讓開發者不要去關心自己的圖集。做界面的時候只用小圖,而在最終打包的時候unity才會把你的小圖和并在一張大的圖集里面。然而這一切一切都是自動完成的,開發者不需要去care它。
打包圖集
Editor->Project Settings 下面有sprite packer的模式。
Disabled表示不啟用它,
Enabled For Builds 表示只有打包的時候才會啟用它,
Always Enabled 表示永遠啟用它。
這里的啟用它就表示是否將小圖自動打成圖集。
Sprite Atlas與Sprite Mask詳解_Peter_Gao_的博客-CSDN博客
Unity中的Frame Debug中的渲染順序以及數量和Profiler中看到的Draw Call數量,以及在高通的調試工具里看到的DrawCall 數,到底什么關系?哪個數值是影響渲染的重要指標? -- UWA問答 | 游戲開發者互動問答社區 | 侑虎科技
總結
以上是生活随笔為你收集整理的UGUI图集的理解与使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 热门博客
- 下一篇: Apad Qzone项目总结(一)---