生活随笔
收集整理的這篇文章主要介紹了
NGUI图集
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
NGUI的三大組件,UILabel、UISprite、UITexture,它們?nèi)齻€(gè)同時(shí)都繼承UIWidget。先回到一個(gè)很郁悶的話題上,到底是優(yōu)化DrawCall還是優(yōu)化內(nèi)存。
UISprite : ?NGUI引入圖集的概念,不考慮ABA疊層的情況下,一個(gè)圖集內(nèi)的圖片用UISprite,那么它就是一個(gè)DrawCall。但是如果你做了一個(gè)圖集是1024X1024的。此時(shí)你的界面上只用了圖集中的一張很小的圖,那么很抱歉1024X1024這張大圖都需要載入你的內(nèi)存里面,1024就是4M的內(nèi)存,如果你做了10個(gè)1024的圖集,你的界面上剛好都只用了每個(gè)圖集里面的一張小圖,那么再次抱歉你的內(nèi)存直接飆40M。另外生成出來的Atlas我記得默認(rèn)會(huì)打開mipMap的選項(xiàng),mipMap是攝像機(jī)離得遠(yuǎn)近用不同的圖片,用來減少渲染,可是UI絕對不會(huì)出現(xiàn)遠(yuǎn)近之分,mipMap會(huì)讓你的包占更大的容量,因?yàn)槭莾蓮垐D。
如下圖所示,Atlas圖集生成完以后,選擇Advanced,不要勾選Generate Mip Maps ,也不要勾選Read/Write Enabled ,不然1024在內(nèi)存里就不4M了將變成8M。。
?
?
那么NGUI的內(nèi)存怎么施放呢?我建議最好不要手動(dòng)施放,因?yàn)閁nity有一套非常完善自動(dòng)施放內(nèi)存的方法。如果你的項(xiàng)目不變態(tài),切場景的時(shí)候就用異步切換場景。
| 1 | yield return Application.LoadLevelAsync(name); |
?我發(fā)現(xiàn)很多人喜歡切場景的時(shí)候,在調(diào)用一下Resources.unloadunnsedAssets,這是多此一舉的。
| 1 | Resources.UnloadUnusedAssets (); |
當(dāng)場景切換完畢后,Unity會(huì)自動(dòng)施放沒有被引用的內(nèi)存。 我記得NGUI3.X某一個(gè)版本是存在內(nèi)存泄漏的問題,后來我們專門升級(jí)了新版本,扯遠(yuǎn)了,回到正題!
UITexture:它完全沒有圖集的概念,使用起來非常的靈活,只需要把圖片掛上去就行了。這樣內(nèi)存里只會(huì)占用你這一張圖的大小,內(nèi)存雖然小了但是DrawCall就上去了。因?yàn)槊恳粡圲ITexture就是一次DrawCall。如果你發(fā)現(xiàn)你的UITexture圖片大小不對了,是因?yàn)閳D片拖進(jìn)Unity默認(rèn)圖片的格式會(huì)設(shè)置成Texture,它的NonPower of2 是默認(rèn)打開的,所以他會(huì)縮放你的圖片成2的冪次方,所以你可以把圖片格式改成GUI。
圖片格式: NGUI生成的圖集的圖片格式是PNG,但是無論是什么格式的圖片,Unity都會(huì)自己搞一套格式,并且打包的時(shí)候也不會(huì)用你文件夾下圖片的格式,而是Unity自己的格式。如果你用UITexture你可以真對每一張圖來修改它的格式,比如一些顏色數(shù)比較少的圖片,你可以直接用16bit,如果你的圖片沒有用到透明,你可以用pvr或者etc,這樣你的圖片會(huì)更小。可是UISprite就不行,只要其中有一張小圖用了透明,你就得用RGBA32,不然UI就會(huì)很難看,你可以自己試試。
除了UITexture 和 Atlas的圖片沒辦法以外(因?yàn)楸仨氂型该?#xff09;,不是建議是必須,你的貼圖無論如何都必須是2的冪次方。因?yàn)橹挥?的冪次方圖片 并且沒有透明通道才會(huì)被壓縮,IOS會(huì)壓縮成pvr格式,Android會(huì)壓縮成ETC格式,壓縮以后圖片會(huì)小很多的,好幾倍的小。
人物貼圖、場景貼圖、特效貼圖、一定要2的冪次方!切記!!如下圖所示,同樣的貼圖大小。
?RGBA 32 大小 1M
Android ETC 大小170.7KB
IOS PVR 大小 170.8 KB
我覺得界面中那些重復(fù)性比較高的圖片最好打成圖集,而一些原畫,或者背景圖建議直接使用UITexture。還有NGUI的圖集其實(shí)很占用內(nèi)存,也很占用空間,為了優(yōu)化效率盡量讓策劃拖妥協(xié)讓UI盡可能的復(fù)用。
所以做項(xiàng)目初期就要好好的管理自己的圖集,這也是個(gè)很郁悶的話題,因?yàn)樾枨笠恢倍荚谧兯阅愫茈y規(guī)劃你的圖集,你不知道美術(shù)會(huì)設(shè)計(jì)出來什么樣的圖,你也不知道策劃會(huì)設(shè)計(jì)出來什么樣的界面,所以你很難去確定你的公共圖集 還有 界面特有圖集該如何來規(guī)劃。因?yàn)橐徊恍⌒哪愕膱D集就會(huì)超過1024,你也不知道那些資源復(fù)用性最高。。這也是我覺得NGUI最郁悶的一點(diǎn)。。如果那一天做UI不用自己去規(guī)劃圖集而是運(yùn)行時(shí)系統(tǒng)最優(yōu)選擇,那該多好呀!!!
總結(jié)
以上是生活随笔為你收集整理的NGUI图集的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。