1. 程式人生 > >Unity中貼圖處理

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選項預設是關閉的,如果開啟這個選項,據說紋理的記憶體會增加一倍(沒有測試過,抽空試一下。)