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