本文是Unity官方教程,性能優化系列的第一篇《The Profiler window》的簡單翻譯。
相關文章:
Unity性能優化(1)-官方教程The Profiler window翻譯
Unity性能優化(2)-官方教程Diagnosing performance problems using the Profiler window翻譯
Unity性能優化(3)-官方教程Optimizing garbage collection in Unity games翻譯
Unity性能優化(4)-官方教程Optimizing graphics rendering in Unity games翻譯
簡介
性能分析工具可以給我們提供游戲性能表現的詳細信息。如果我們的游戲存在性能問題,如低幀率或者高內存占用,性能分析工具可以幫助我們發現問題的起因,並協助我們解決問題。
Profiler工具是Unity內置的強大的性能分析工具,本文介紹如何使用它。當我們閱讀完本文,並且熟悉Profiler的界面和功能時,我們可以繼續學習怎么使用它對不同類型的性能問題進行診斷。
Profiler可以給我們提供,關於我們的游戲的不同部分是怎樣運行的深入的信息。
使用Profiler我們可以學習游戲性能的不同方面,例如我們的游戲如何使用內存,不同的任務使用了多少cpu時間,物理運算執行的有多頻繁。最重要的是,我們可以利用這些數據找到引起性能問題的原因,並且測量我們的解決方案的有效性。
Profiler布局
在我們使用Profiler收集游戲數據之前,先打開它熟悉下界面布局。
-從菜單Window > Profiler打開
注意,只有在它開始錄制時才會顯示性能信息,當我們第一次打開時,一些部分是空的。
Profilers
在窗口左側,可以看到一列profilers,每個profiler顯示我們游戲的一個方面的信息,分別為cpu使用情況,gpu使用情況,渲染,內存使用情況,聲音,物理和網絡。
當開始錄制時,窗口上部的每個profiler會隨着時間顯示數據。性能是隨着時間變化的,所以隨着時間變化的信息是比僅僅一幀的信息有用的多的。有些性能問題是持續性的,有些問題是僅僅在一幀中出現的,還有一些性能問題是隨着時間逐漸顯現的。
Profiler的下半部顯示我們選擇的當前profiler當前幀的詳細信息。
這里顯示的數據依賴於我們當前選擇的profiler。例如,當選中內存profiler時,這個區域顯示如游戲資產使用的內存和總共內存占用等。如果選中渲染profiler,這里會顯示被渲染的對象數量或者渲染操作執行次數等數據。
這些profiler會提供很多詳細信息,但是我們並不總是需要使用這些所有的profiler。事實上,我們通常在分析游戲性能時只是觀察一個或者兩個profiler。例如,當我們的游戲運行的比較慢時,我們可能一開始先查看cpu usage profiler。
cpu usage profiler給我們一個總覽,可以觀察到我們游戲的哪個部分占用了最多的cpu時間。然后我們可以查看那個部分相關的profiler。例如我們發現物理運算函數占用了很長時間,那么我們就需要使用物理profiler去獲取更多的詳細信息。
我們可以關閉一些我們不關心的profiler,通過點擊x按鈕就可以關閉。
通過點擊左上角的Add Profiler按鈕,我們可以添加profiler。
我們可以隨時添加或者刪除profiler,添加刪除操作不會清除他們的數據,僅僅是顯示或者隱藏他們。
控制
Profiler窗口的頂部包含一些控制按鈕。
我們可以使用控制按鈕開始或停止分析和瀏覽收集的數據。
一個典型的使用控制按鈕的過程如下,開始分析我們的游戲,當游戲出現性能問題時,停止分析,然后通過時間線控制,逐幀的找到顯示出性能問題的幀,這幀的詳細信息會在下半部窗口顯示。
錄制分析數據
現在我們理解了profiler的界面布局,讓我們繼續學習如何錄制數據,以及如何解讀數據來幫助我們理解游戲的性能。
我們需要理解,當錄制數據時,游戲性能會受到微小的影響,一般的性能分析工具都存在這個問題,想要獲取深入的信息而沒有額外的消耗是不可能的。
我們可以在unity editor中運行游戲時進行分析,也可以在游戲的development build運行時進行分析。development build的unity游戲和常規build有兩方面不同:development build在游戲運行時可以連接profiler,並且包含了調試用的文件。
在development build中進行性能分析通常要比在unity editor分析要好。有兩個原因:第一,性能和內存占用等數據要比在unity editor中准確,因為profiler本身也屬於editor的一部分,這會影響結果。第二,最好在我們游戲的目標平台上進行性能分析,如果我們的游戲是安卓游戲,那么我們應該在一個安卓設備上進行測試。一些問題可能只會在特定的硬件或者特定的操作系統上出現,而我們如果只是用unity editor進行測試,就無法發現這些問題。
雖然如此,有時我們在unity editor中進行分析也是有一定作用的。有時我們需要快速的了解游戲大體上的性能,並不需要精確的結果,此時可以在unity editor中進行分析。例如,我們也許需要在運行時啟用或禁用大量的游戲對象,查找是哪一個游戲對象引起的性能問題,在unity editor中測試這些更改是比development build要方便很多的,當我們粗略的發現問題大概范圍時,再在development build中進行分析,獲取更加准確的信息幫助我們處理這個問題。
在Unity Editor中進行分析
在unity editor中進行錄制分析的步驟如下:
-在unity中打開游戲工程
-菜單中打開profiler Window > Profiler
-確保Profiler窗口頂部的Record按鈕為選中狀態
-在Play Mode中運行游戲
此時Profiler會隨着游戲中的互動實時的顯示分析數據。
在development build中進行分析
在目標平台上進行分析,需要運行development build並連接Profiler。不同的目標平台有不同的具體做法。
Windows, OSX, Linux and WebGL
步驟如下:
-在unity中打開想要分析的項目
-菜單中打開profiler Window > Profiler
-確保Profiler窗口頂部的Record按鈕為選中狀態
-打開build settings(File > Build Settings)
-勾選Development Build
-勾選Autoconnect Profiler
-點擊Build and Run
此時Profiler會隨着游戲中的互動實時的顯示分析數據。
iOS or Android
在iOS或者Android中連接Profiler有些復雜,因為我們需要把游戲安裝到設備上,並且把設備連接到Unity Editor。
詳細的操作步驟,請參考on this page of the Unity Manual.
使用Profiler診斷問題
現在我們理解了Profiler是怎樣工作的,我們可以使用它來確定我們游戲中的問題,並協助我們解決這些問題。
如果你的游戲運行慢,卡頓,這篇文章可以幫助你使用Profiler找到問題所在。
擴展閱讀
Unity Learn: Introduction to the profiler
Unity Learn: Profiler overview for beginners
Unity Manual: The CPU Profiler
Unity Manual: The GPU Profiler
Unity Manual: The Rendering Profiler
Unity Manual: The Memory Profiler
Unity Manual: The Audio Profiler