Laya資源優化(圖片、Josn、3D模型文件)
一、圖片占用內存計算:
在webGL
模式下:圖片高度 * 圖片寬度 * 一個像素占用的字節數(width * height * 4 byte,如:800 * 600的圖片占用內存1.83M = 1875KB = 1920000B = 600 * 800 * 4 byte)。
二、紋理壓縮(2D、3D)
效果:降低顯存約75%,減少圖片解碼卡頓現象。
1、在游戲中,不使用紋理壓縮時,為了節省顯存的占用。通常的做法是:
將原圖按低分辨率的機型進行設計,然后在游戲中拉伸適配高分辨率的機型。這樣就會導致游戲的馬賽克現象(很多小游戲在安卓的某些高清分辨機型上出現這種問題,一定是該問題導致的)。
2、在游戲中,使用紋理壓縮時:
使用紋理壓縮的模式即使按高分辨率進行設計也是占用較小的顯存,所以在同等顯存占用情況下,在高分辨率的機型上,2D圖片壓縮效果會比拉伸效果更好。
3D貼圖在壓縮后效果更好,壓縮對於原因的損失在視覺效果上幾乎忽略不計。
PS:
①、3D使用紋理壓縮后,視覺上基本看不出來,所以推薦使用。
②、但在2D使用紋理壓縮要慎重,靜態圖片(如:UI)盡量不要使用紋理壓縮功能,動態圖片(2D角色動畫等)則不會太明顯沒有高清畫質表現需求的可以使用。
游戲中常見的圖片文件格式通常是png
和jpg
等,這些圖片需要先經過CPU解碼,然后傳送到GPU進行使用。而紋理壓縮后的格式,是無需解碼即可直接被GPU讀取並顯示的格式,所以,一方面是節省大量的顯存,另一方面也可以減少圖片解碼帶來的CPU壓力。
Ps:
①、紋理壓縮因為要依托於顯卡的硬件加速,所以只能是webGL
模式下可用。
②、不同平台(操作系統)也有所不同。例如:Android
平台是ktx
格式,在ios
平台是pvr
格式。
由於不同平台的格式不同,所以跨平台的游戲,使用紋理壓縮在降低顯存的同時,代價是增加了文件的大小,所以最終是要依據項目的情況來找到一個平衡點。
三、3D模型文件壓縮
效果:降低模式文件尺寸約60%。
3D游戲中模型是游戲資源體積的重要組成部分,所以減少模型文件的大小,可以縮短游戲的加載時長,加快玩家進入游戲的速度。在當前網速環境下,減少游戲體積還是比較重要的增值功能。
四、3D動畫文件壓縮
效果:降低3D動畫文件尺寸約40%。
3D動畫文件壓縮與模型壓縮一樣,作用是減少文件下載的大小,用於加快玩家進入游戲的速度。
五、文件合並(json與二進制)
效果:可合並json類型
的文本文件,大幅減少文件下載交互數量,提升游戲加載效率。
當游戲的小文件比較多時,會大量增加http
請求,使得加載變量,而合並文件功能可以將json類型
的文件進行合並,這將減少文件的http
請求數,從而提高加載效率。當然,如果盲目合並,也會在打包后增加文件的一次性下載時長。所以,開發者要依據項目的實際情況來使用,尤其是在小文件多的時候再用。