簡介
這篇主要是概述有關在使用Unity Editor時,當我們完成專案後或是在製作過程中會需要檢測專案執行的效能。假使效能不好則會造成使用體驗不佳或是無法正常執行遊戲等負面效果,讓一顆(可能有很多顆)老鼠屎將會搞壞一鍋粥。
當然效能必定會與硬體相關,假使您的硬體有外接顯卡則會使遊戲中的FPS提升許多,但我們還是需要做到用最精確的資源呈現最好的效果,總而言之必須精準控制場景中各個細節,雖然很繁瑣但是是很重要的環節,作品的成敗關鍵點就是這裡了!!
初階檢測
FPS (Frame Pre Seconds) ,這是最基本觀察遊戲是否卡頓的指標數字。我們在Unity中可以打開Window ->General -> Game的視窗,並且在此視窗的右上角有個Stats按鈕,這視窗叫做即時檢測視窗(Rendering Statistics Window),點下去後即可顯示目前遊戲執行的即時簡易效能檢測。以下所有係向Unity會做整個配置最後以FPS來統合整個遊戲效能的指標。
CPU
這是顯示此遊戲場景佔用CPU計算的時間點,數值越低越好。
Render Thread
GPU render處理影像的時間,數值越低越好。
Batches
這項指標是Unity的render技術(Draw Call Batching),在場景中系統會把每個GameObject解析後看是否需要進入render engine做運算,這邊會發出個Draw Call給運算API(openGL or Direct3D),此時則會產生一個Batch,Batch中包含了物件的網格與頂點資訊。
而Batches包含了三種,1.Saved by Batch , 2.Dynamic Batch , 3.Static Batch(以上三類到中階版再詳述)。這個數值也是越低越好。
*在場景中會被發DrawCall被運算的有 Mesh Renderers , Trail Renderers , Line Renderers , Particle Systems , Sprite Renderers。
Saved by Batching
這個值在功能層面叫做合併渲染,是將Dynamic + Static Batch有相同材質自動做合併渲染,此功能也會佔據了總Batches的值,但會優化整體的系統,此指標其實可以看總Batches即可。
Tris & Verts
Tris 是場景中攝影機所截取到物件的頂點數總和,越低越好。
Verts 是場景中攝影機所截取到物件的三角面數總和,越低越好。
以上兩個指標假如要降低面數的話,可將場景中每一個物件做LOD (Level of Detail) 。
Screen
當下Game window的解析度,這個也會影響整個FPS的數值,建議先確定好解析度規格後再開始建制場景中的細項。這個就不能說越低越好了。
SetPass Calls & Shadow casters
SetPass Call這個值跟Draw Call有關,透過CPU發出指令給GPU改變一些渲染狀態,這就是SetPass Call,有哪些DrawCall需要改變渲染方式,SetPass的值就有多少。
Shadow casters這個值代表場景中可以投射陰影的物體,一般這些物體都作為場景中的光源。
Visible Skinned Meshes & Animations
這兩個值相對上面來說對遊戲主體的影響較為些微。
Visible Skinned Meshes 渲染面板網格的數量。
Animations 是場景中正在播放動畫的數量。
小結
以上所介紹的都是較為初階的檢測方式,如何看數值是否有減少呢?例如調整light shadow、Reflection Probe 、物件的模型面數、baking Light map、Project setting monitor、靜態化物件、SRP Batcher….等等等很多方式都可以及時地看到Stats面板的數據有變動,如此將可以進行效能優化的初階動作。
Reference
https://docs.unity3d.com/Manual/DrawCallBatching.html
https://docs.unity3d.com/Manual/RenderingStatistics.html