【Unity3D遊戲開發】性能優化之Texture圖片空間和內存佔用分析(三七)

Unity3D–Texture圖片空間和內存佔用分析

Texture圖片空間和內存佔用分析。由於U3D並沒有很好的詮釋對於圖片的處理方式,所以很多人一直對於圖集的大小和內存的佔用情況都不瞭解。在此對於U3D的圖片問題做一個實際數據的分析。此前的項目都會存在這樣或者那樣的打包後包大小與內存佔用情況的問題,所以這次所以徹徹底底得分析下U3D對於Texture的處理方式。程序裏的內存優化請參考《Unity3d優化之路》。減少U3D包大小請參考《unity3d之如何將包大小減少到極致》

我打包多種類型的項目,空項目和10張放在Resources文件夾中的圖爲比較案例。以下是比較數據。

IPHONE:

1.空項目—-空間佔用量42.3MB—-IPA大小10MB

2.10張1200*520無壓縮Texure 單張圖佔用量2.8MB—-空間佔用量70.2MB—-IPA大小22.9MB

3.10張1200*520壓縮成1024*1024PVRTC4 單張圖佔用量0.5MB—-空間佔用量47.3MB—-IPA大小13.2MB

4. 10張1024*1024無壓縮Texture 單張圖佔用量4MB—-空間佔用量82.3MB—-IPA大小14.6MB

5.10張1024*1024壓縮爲PVRTC4格式 單張圖佔用量0.5MB—-空間佔用量47.3MB—-IPA大小11.6MB

 

宗上數據總結:

一、2的N次方大小的圖片會得到引擎更大的支持,包括壓縮比率,內存消耗,打包壓縮大小,而且支持的力度非常大。

二、減小圖片的佔用大小和內存方式有:圖片大小變化(Maxsize),色彩位數變化(16位,32位),壓縮(PVRC)。

三、U3D對於圖片的格式是自己生成的,而並不是你給他什麼格式,他就用什麼格式,一張1024*1024圖在無壓縮格式下,它會被U3D以無壓縮文件形式存放,也就是說U3D裏的Texture Preview裏顯示的佔用大小**MB不只是內存佔用大小,還是空間佔用大小。如下圖所示:

U3D的內部機制爲自動生成圖片類型來替換我們給的圖片,在圖片的壓縮方式上需要進行謹慎的選擇。

壓縮格式在U3D的Component Reference裏有介紹我就不再詳細介紹,只介紹幾個重點的:

RGBA32格式爲無壓縮最保真格式,但也是最浪費內存和空間的格式。Automatic Turecolor和它一個意思。

RGBA16格式爲無壓縮16位格式,比32位節省一半的空間和內存。Automatic 16bits和它一個意思。

RGBA Compressed PVRTC 4bits格式爲PVRTC圖片格式,它相當於把圖片更改了壓縮方式新生成了一個圖片來替換原來的我們給的圖片格式(比如我們給的是PNG格式)。

注意:U3D所有圖片的壓縮格式都會以另一種方式來存儲,不會以你給的方式來存儲,只有你指定了某種格式,它纔會轉成你要的格式。而且壓縮格式在Android裏並不一定有效,因爲Android的機型多,GPU的渲染方式也不一樣,有的是Nvidia,有的是PowerVR,最最好的在安卓機子上啓用RGBA16方式,因爲這個是適應所有機型的,並且比32位佔用量少一半,但也需要因項目而異,只是推薦使用的格式,可以多用。

發佈了106 篇原創文章 · 獲贊 24 · 訪問量 132萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章