日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity3D游戏内存瘦身指南: UI优化是关键

發(fā)布時間:2024/8/26 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity3D游戏内存瘦身指南: UI优化是关键 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

游戲占用的內存中,UI部分主要是貼圖資源和字體資源。其中貼圖是單張圖片,而字體包括UIFont和TrueTypeFont(TTF)。

資源占用內存大小,從Unity Profiler可看到許多細節(jié)。
?



一、貼圖占用內存優(yōu)化

(1)縮減貼圖占用內存

注意,貼圖資源占用內存大小不等于文件大小,而是與資源導入設置有關。同一個導入設置則只與資源寬高尺寸有關,與資源原始文件格式無關。在進行安裝包大小瘦身時,已針對各種應用場景,有損或無損的縮減貼圖資源大小。由于資源加載后占用內存大小與安裝包打包前資源大小一致,所以安裝包瘦身實際上也是在減少貼圖資源占用內存大小。

舉個例子:一張512x512貼圖。

使用RGBA 32bit真彩,占用內存 = 4Bytes*512*512 = 1MB;

使用RGB ETC 4bit壓縮,占用內存 = 0.5Bytes*512*512 = 128KB。

具體的壓縮選型和操作細節(jié),可參考安裝包瘦身一文。
?



某些壓縮方式是無損的,某些是有損的,應按需采用。

(2)拆分大資源,且按需加載

貼圖資源使用方式包括UITexture和UIAtlas這兩類。其本質都是一張圖片,區(qū)別在于UITexture是單張大圖,而UIAtlas是多張小圖合集做成一張大圖。某些應用場景中可以將大尺寸UIAtlas拆分為小尺寸UIAtlas和多個UITexture,然后按需加載顯示。拆分后內存占用大小<=拆分前內存占用大小。

舉個例子:新手引導圖集(調整前1024x1024,4MB)。
?



單局中并不需要同時顯示全部角色和道具Icon。于是可拆分成多個,按需加載,即可減少占用內存總大小。
?



新手引導圖集(調整后1024x512,2MB)。
?



再加數(shù)個拆分出來的小圖(幾百KB)。
?



(3)及時回收過時資源

方法(1)優(yōu)化了常駐的內存大小。如果一張貼圖使用后不再被使用,手機號碼又沒有被及時回收,那么內存占用總量會只增不減。這些過時資源應及時回收。



實踐中發(fā)現(xiàn)幾個現(xiàn)象:
?


?



回收UI資源的代碼片段(供參考):
?



此方法在Application.LoadLevel前后執(zhí)行。此方法有些暴力,全部UITexture和UIAtlas的貼圖資源都被掃描且可能被UnloadAsset。

此處白名單Texture和動態(tài)創(chuàng)建Texture需單獨處理,否則可能報錯。舉例:下圖是UnloadAsset網絡下載的玩家頭像報錯了。
?



如果貼圖資源再次使用,那么在加載prefab時會重新加載相關貼圖資源。

其中包含幾個關鍵方法:
?



注意這里卸載資源用協(xié)程分了幾幀實現(xiàn)。受限于上述方法的先后執(zhí)行順序,放在同一幀處理達不到卸載的目的。

二、字體占用內存優(yōu)化。

(1)UIFont字體,占用內存大小與字體貼圖資源導入設置有關。優(yōu)化思路同Texture貼圖,包括縮小字號、只制作所需字符、復用字體等。比如以下字體同時用在單局結算分數(shù)和伙伴技能冒字。
?



(2)TTF字體,占用內存大小等于文件大小。優(yōu)化思路是盡量復用字體,減少使用差異化字體。


?


?



三、效果舉例。

經過先前安裝包瘦身,已減少幾十MB貼圖資源占用內存。

又依照上述方法優(yōu)化,包括縮減資源尺寸(紅色)、卸載過時資源(綠色)、整合字體(橙色),進一步又減少了約26MB內存占用。
?

總結

以上是生活随笔為你收集整理的Unity3D游戏内存瘦身指南: UI优化是关键的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。