天天看點

使用UWA GOT優化Unity性能和記憶體

使用UWA測試平台作為性能分析的輔助手段已經有很長時間了,每個版本測試一下可以得到一份整理過的報告,比人工分析高效不少。但畢竟網站送出的方式需要等一段時間。這次得知UWA還出了本地化的工具,立馬嘗試了一下,果然非常給力。

UWA GOT有三種分析方式CPU Overview,Mono Analysis和Assets Tracker,我最喜歡的是Mono Analysis,查找記憶體洩漏問題時就友善很多。雖然分析上不如XCode全面詳細,但已經滿足日常的基本需求,一些測試工作也可以交由測試同學完成,離線分析。

UWA GOT的使用方式就不多說了,官方的幫助文檔非常詳細,這裡提供下傳送門。

以下是性能分析工具的截圖:

使用UWA GOT優化Unity性能和記憶體

CPU Overview模式可以檢測出高耗時的邏輯函數。在下圖中,我們可以看到邏輯層的開銷比較高,考慮到是幀同步,所有邏輯都在邏輯層,66ms更新一次,開銷比較高的子產品在角色,技能,網絡等。由于在此之前,已經優化過幾輪,各個子產品的開銷都比較平均了,沒有明顯的瓶頸,進一步的優化需要更細緻的深度分析和優化了,屬于打磨的過程。

使用UWA GOT優化Unity性能和記憶體

Asset Tracker模式可以追蹤到各個資源的使用情況,包括具體資源的格式是否合理,是否存在備援等問題。下圖可以看到AI的記憶體開銷比較高。主要是因為AI對一些幀操作做了Clone。

使用UWA GOT優化Unity性能和記憶體

下圖是日志和錄像的系統開銷,可以看到其耗時較高。不過錄像系統隻有Debug在用戶端,Release版會記錄在伺服器,日志系統隻有Debug版會記錄本地,Release版隻會上報不同步的、前後有限幀的資料,并且日志系統也将會改成記錄二進制資料。

使用UWA GOT優化Unity性能和記憶體

下圖是利用Asset Tracker功能發現的備援MeshCollider,我們項目目前隻使用了BoxCollider和基本的射線檢測,在此基礎上實作了一套簡單的實體系統。是以是不應該有MeshCollider的使用,此處初判是誤傳的資源。

使用UWA GOT優化Unity性能和記憶體

特效和場景資源占用較高,還需要美術進一步優化。戰鬥激烈的時候特效占的記憶體甚至要比貼圖和Mesh加起來還大。

使用UWA GOT優化Unity性能和記憶體

特效部分主要是粒子系統,使用次數非常多,産生的記憶體占用也相當高,超過了貼圖的大小。這是因為射擊遊戲時,每幀會産生大量子彈,更需要小心使用和優化。

使用UWA GOT優化Unity性能和記憶體

場景的Mesh資源合并後,記憶體占用也比較高,因為場景一直無法确定,美術不能做人工靜态合并,隻能做載入時的靜态合并,等場景确定下來可進行人工或借助插件合并。

使用UWA GOT優化Unity性能和記憶體

FMOD的參數使用了String,并且調用次數非常高,導緻GC較高,可以優化。

使用UWA GOT優化Unity性能和記憶體

下圖是技能系統底層,我寫的計時器使用了delegate,并且次數非常高,進而也導緻了GC較高。因為整個遊戲中,幾乎所有的變現效果都使用這套系統,是以這塊是目前最大的瓶頸。

使用UWA GOT優化Unity性能和記憶體

作為一個射擊遊戲,子彈資料非常高,雖然使用了記憶體池,也做了預加載并制定了一次政策,但是不同技能表現出腳本調用的頻率差距很大,個别腳本預加載的個數遠遠不夠。

使用UWA GOT優化Unity性能和記憶體

UI的一些合并産生了較高的GC,可以劃分動态和靜态層,也可以對動态需要隐藏的UI使用移除螢幕等方式減少合并次數。

使用UWA GOT優化Unity性能和記憶體

下圖為一些粒子系統播放開關産生的開銷。

使用UWA GOT優化Unity性能和記憶體

跳字GC較高,因為使用了漸變,這部分可以做優化。

使用UWA GOT優化Unity性能和記憶體

UWA GOT中的Mono Analysis可以對比兩幀的記憶體快照,進而找到增量的部分。下圖是實測圖,對比兩幀之間,可以發現還有一點建立角色的GC開銷,看起來不高,我推測有角色漏了預加載,因為技能可能召喚角色,各種生成器會随機産生道具和怪物等,都有可能漏掉。此外開始幀和結束幀之間記憶體配置設定差異較小,說明優化得較好。

使用UWA GOT優化Unity性能和記憶體

利用好UWA GOT的這三個功能後,到這裡基本上已經能抓出不少性能的瓶頸了,接下來我們也能大緻拟定一個優化的方案了。需要說明的是,因為之前也定期使用UWA的線上檢測工具,感覺線上檢測工具雖然耗時較長(可能要一天),但是分析的功能和深度還是更勝一籌,當然UWA GOT的優勢重在靈活和高效,是以建議大家結合起來用。

文末,感謝韓宇飛的分享,小編有幸也體驗了他們的遊戲,是一款俯視角英雄槍戰手遊,同時融合了MOBA的屬性,創造性地将操作感與政策性,遊戲創造性地将職業以及英雄技能加入到了傳統射擊遊戲中,歡迎大家戳此傳送門來了解哦!https://www.taptap.com/app/14617

使用UWA GOT優化Unity性能和記憶體

原文出處:侑虎科技

本文作者:admin

轉載請與作者聯系,同時請務必标明文章原始出處和原文連結及本聲明。