Unity中貼圖處理
專案逼近後期,效能問題尤為突出。卡頓、幀數很低、記憶體過高等問題一一擺在面前。
就先從記憶體說起吧。
影響遊戲記憶體的因數有很多:比如說紋理、網格、動畫、音訊、Mono堆記憶體等。
今天咱們主要研究一下紋理貼圖。
1.紋理格式:
在專案中,儘可能使用ETC1和PVRTC4等GPU直接支援的圖片格式,不僅記憶體佔用低,效能也好。
當出現質量不合格的時候,再更改紋理格式,滿足需求。
Unity對紋理的識別很智慧,匯入圖片的格式無論是PNG,PSD還是TGA,都會被自動轉換成Texture2D。
我們可以對紋理進行格式的設定。
近期我們針對NGUI的圖集進行了處理:
在Android平臺使用ETC1+Alpha通道圖的方式;在IOS平臺使用PVRTC4的紋理。(接下來的文章會介紹這個步驟的具體操作)
個別要求清晰度較高的,使用RGBA 16。但是使用RGBA 16的話,漸變的圖片會慘不忍睹。所以使用RGBA 16的時候需要增加一些特殊處理(Dithering抖動)。
如果是要求高保真的話,就只能使用最高質量的RGBA 32的格式了。
2 .紋理大小
Unity的Mipmap檢視很神奇,推薦大家可以在閒暇之餘用一下。
把攝像機拉到遊戲視角,MipMap檢視中藍色的表示貼圖可以使用更大的紋理,紅色的表示可以使用更小的紋理。
UIAtlas的貼圖控制在1024*1024
另外需要控制特效貼圖大小:128/64 我們專案之前特效都是在用256~~~~~~~
需要注意的是:需要壓縮的紋理必須是方形的。
3.紋理的Mipmaps的選項
紋理的Mipmaps和LOD相似,只不過LOD是針對於模型,Mipmaps針對於紋理。
使用Mipmaps的好處當然是減少頻寬,緩解CPU、GUP的壓力,帶來的後果是記憶體的增加。
UI的紋理肯定是需要關閉這個選項的,我們專案中特效的貼圖也關閉了這個選項,因為我們對粒子特效錯了相關處理(不在視錐體內的隱藏)
4.關閉Read&Write選項
紋理資源的Read&Write選項預設是關閉的,如果開啟這個選項,據說紋理的記憶體會增加一倍(沒有測試過,抽空試一下。)