Profiler窗口
Unity Profiler窗口可幫助您優(yōu)化游戲。它會(huì)為您報(bào)告在游戲的各個(gè)區(qū)域花了多少時(shí)間芝加。例如唯欣,它可以報(bào)告渲染,動(dòng)畫(huà)或游戲邏輯所花時(shí)間的百分比遗遵。
您可以在編輯器中使用性能分析功能來(lái)玩游戲萍恕,并且會(huì)記錄性能數(shù)據(jù)。 Profiler窗口隨后在時(shí)間軸中顯示數(shù)據(jù)车要,以便您可以看到比其他幀更快的幀(或更多時(shí)間)允粤。通過(guò)點(diǎn)擊時(shí)間線中的任何位置,Profiler窗口的底部將顯示所選幀的詳細(xì)信息翼岁。
請(qǐng)注意类垫,性能分析必須測(cè)試您的代碼。這種儀器對(duì)游戲的性能影響很小琅坡。通常這個(gè)開(kāi)銷(xiāo)足夠小悉患,不會(huì)影響游戲幀率。在使用分析時(shí)榆俺,通常只考慮在特定區(qū)域花費(fèi)的時(shí)間比例(或百分比)售躁。此外坞淮,為了提高性能,重點(diǎn)放在消耗最多時(shí)間的游戲部分陪捷。比較代碼更改前后的分析結(jié)果并確定您測(cè)量的改進(jìn)回窘。有時(shí)您為改善性能所做的更改可能會(huì)對(duì)幀速率產(chǎn)生負(fù)面影響;代碼優(yōu)化的意外后果應(yīng)該是可以預(yù)料的。
iOS遠(yuǎn)程調(diào)試
通過(guò)執(zhí)行以下步驟可以在iOS設(shè)備上啟用遠(yuǎn)程配置文件:
1.將您的iOS設(shè)備連接到您的WiFi網(wǎng)絡(luò)(探查器使用本地/ adhoc WiFi網(wǎng)絡(luò)將設(shè)備的性能分析數(shù)據(jù)發(fā)送到Unity Editor)市袖。
2.在Unity的構(gòu)建設(shè)置對(duì)話框中選中“Autoconnect Profiler”復(fù)選框啡直。
3.通過(guò)數(shù)據(jù)線將設(shè)備連接到Mac,在Unity的構(gòu)建設(shè)置對(duì)話框中選中“Development Build”復(fù)選框苍碟,然后在Unity Editor中點(diǎn)擊“Build&Run”酒觅。
4.當(dāng)應(yīng)用在Unity編輯器(Window-> Profiler)中的設(shè)備打開(kāi)分析器窗口上啟動(dòng)時(shí)。
5.如果您使用防火墻微峰,則需要確保端口54998到55511在防火墻的出站規(guī)則中處于打開(kāi)狀態(tài) - 這些是Unity用于遠(yuǎn)程分析的端口舷丹。
注意:有時(shí)Unity編輯器可能不會(huì)自動(dòng)連接到設(shè)備。 在這種情況下县忌,可通過(guò)選擇適當(dāng)?shù)脑O(shè)備從Profiler Window Active Profiler下拉菜單啟動(dòng)Profiler連接掂榔。
Android遠(yuǎn)程調(diào)試
可以通過(guò)兩種不同的路徑在Android設(shè)備上啟用遠(yuǎn)程配置文件:WiFi或ADB继效。
- 對(duì)于WiFi分析症杏,請(qǐng)按照下列步驟操作:
1.請(qǐng)務(wù)必在您的Android設(shè)備上停用移動(dòng)數(shù)據(jù)。
2.將您的Android設(shè)備連接到您的WiFi網(wǎng)絡(luò)瑞信。
3.通過(guò)數(shù)據(jù)線將設(shè)備連接到Mac / PC上厉颤,在Unity的構(gòu)建設(shè)置對(duì)話框中選中“開(kāi)發(fā)構(gòu)建”和“Autoconnect Profiler”復(fù)選框,然后在Unity編輯器中點(diǎn)擊“構(gòu)建和運(yùn)行”凡简。
4.當(dāng)應(yīng)用在設(shè)備上啟動(dòng)時(shí)逼友,在Unity編輯器(Window-> Profiler)中打開(kāi)Profiler窗口,
5.如果Unity Editor無(wú)法自動(dòng)連接到設(shè)備秤涩,請(qǐng)從Profiler Window Active Profiler下拉菜單中選擇適當(dāng)?shù)脑O(shè)備帜乞。
注意:Android設(shè)備和主機(jī)(運(yùn)行Unity Editor)必須位于同一子網(wǎng)上才能使設(shè)備檢測(cè)正常工作。
- 對(duì)于ADB分析筐眷,請(qǐng)按照下列步驟操作:
1.通過(guò)電纜將設(shè)備連接到Mac / PC黎烈,并確保ADB識(shí)別該設(shè)備(即,它顯示在adb設(shè)備列表中)匀谣。
2.檢查Unity的構(gòu)建設(shè)置對(duì)話框中的“Development Build”復(fù)選框照棋,然后點(diǎn)擊“Build&Run”。
3.當(dāng)應(yīng)用在設(shè)備上啟動(dòng)時(shí)武翎,在Unity編輯器(Window-> Profiler)中打開(kāi)Profiler窗口烈炭,
4.從Profiler Window Active Profiler下拉菜單中選擇AndroidProfiler(ADB@127.0.0.1:54999)。
注意:當(dāng)您按下“Build&Run”時(shí)宝恶,Unity編輯器會(huì)自動(dòng)為您的應(yīng)用程序創(chuàng)建一個(gè)adb隧道符隙。如果你想分析另一個(gè)應(yīng)用程序趴捅,或者你重新啟動(dòng)adb服務(wù)器,你必須手動(dòng)設(shè)置這個(gè)隧道膏执。為此驻售,請(qǐng)打開(kāi)終端窗口/ CMD提示并輸入:adb forward tcp:54999 localabstract:Unity-{insert bundle identifier here}
Profiler 窗口
連接到Unity players
要分析在另一臺(tái)計(jì)算機(jī)上運(yùn)行的其他設(shè)備或播放器上運(yùn)行的游戲,可以將編輯器連接到另一臺(tái)播放器更米。 下拉Active Profiler將顯示在本地網(wǎng)絡(luò)上運(yùn)行的所有玩家欺栗。 這些玩家通過(guò)玩家類型和運(yùn)行玩家“iPhonePlayer(Toms iPhone)”的主機(jī)名來(lái)識(shí)別。 為了能夠連接到播放器征峦,必須使用Build Settings對(duì)話框中的Development Build復(fù)選框啟動(dòng)播放器迟几。 從這里也可以勾選復(fù)選框以啟動(dòng)編輯器和播放器自動(dòng)連接。-
Profiler控件
Profiler控件位于窗口頂部的工具欄中栏笆。使用這些來(lái)打開(kāi)和關(guān)閉配置文件类腮,瀏覽配置文件框架等等。運(yùn)輸控件位于工具欄的最右端蛉加。請(qǐng)注意蚜枢,當(dāng)游戲運(yùn)行并且分析器正在收集數(shù)據(jù)時(shí),單擊這些傳輸控件中的任何一個(gè)都會(huì)暫停游戲针饥〕С椋控件進(jìn)入第一個(gè)記錄幀,第一幀返回丁眼,第一幀前進(jìn)并分別轉(zhuǎn)到最后一幀筷凤。分析器不保留所有記錄的幀,所以第一幀的概念應(yīng)該是盡管仍然保留在內(nèi)存中的最舊幀苞七。 “當(dāng)前”傳輸按鈕使配置文件統(tǒng)計(jì)窗口顯示實(shí)時(shí)收集的數(shù)據(jù)藐守。 Active Profiler彈出式菜單允許您選擇是在編輯器還是單獨(dú)的播放器(例如,在連接的iOS設(shè)備上運(yùn)行的游戲)中進(jìn)行分析蹂风。
深度剖析
當(dāng)您打開(kāi)Deep Profile時(shí)卢厂,所有的腳本代碼都將被分析 - 即所有的函數(shù)調(diào)用都被記錄下來(lái)。這對(duì)了解在游戲代碼中花費(fèi)的時(shí)間非常有用惠啄。
請(qǐng)注意慎恒,深度剖析會(huì)產(chǎn)生非常大的開(kāi)銷(xiāo)并使用大量?jī)?nèi)存,因此在分析時(shí)礁阁,您的游戲運(yùn)行速度會(huì)明顯變慢巧号。如果您使用復(fù)雜的腳本代碼,則可能根本無(wú)法進(jìn)行深度剖析姥闭。對(duì)于使用簡(jiǎn)單腳本的小型游戲丹鸿,深度剖析應(yīng)該足夠快。如果您發(fā)現(xiàn)整個(gè)游戲的深度剖析導(dǎo)致幀速率下降到游戲剛剛運(yùn)行的程度棚品,則應(yīng)考慮不使用此方法靠欢,而應(yīng)使用下述方法廊敌。當(dāng)您設(shè)計(jì)游戲并決定如何最好地實(shí)現(xiàn)關(guān)鍵功能時(shí),您可能會(huì)發(fā)現(xiàn)深層剖析更有幫助门怪。請(qǐng)注意骡澈,對(duì)于大型游戲,深度剖析可能會(huì)導(dǎo)致Unity耗盡內(nèi)存掷空,因此可能無(wú)法進(jìn)行深度剖析肋殴。
手動(dòng)分析腳本代碼塊的開(kāi)銷(xiāo)比使用深度分析的開(kāi)銷(xiāo)小。使用Profiler.BeginSample和Profiler.EndSample腳本函數(shù)來(lái)啟用和禁用代碼段的分析坦弟。
查看SyncTime
當(dāng)以固定幀率運(yùn)行或與垂直空白同步運(yùn)行時(shí)护锤,Unity會(huì)在“等待目標(biāo)FPS”中記錄等待時(shí)間。默認(rèn)情況下酿傍,這個(gè)時(shí)間量不會(huì)顯示在探查器中烙懦。要查看等待的時(shí)間,可以切換“查看SyncTime”赤炒。這也是在丟失幀之前你有多少空間的一個(gè)衡量標(biāo)準(zhǔn)氯析。
-
Profiler 時(shí)間線
Profiler窗口的上半部分隨時(shí)間顯示性能數(shù)據(jù)。當(dāng)您運(yùn)行游戲時(shí)莺褒,數(shù)據(jù)會(huì)被記錄在每一幀中掩缓,并顯示最近幾百幀的歷史記錄。點(diǎn)擊一個(gè)特定的框架將在窗口的下半部分顯示其詳細(xì)信息癣朗。根據(jù)當(dāng)前選擇的時(shí)間軸區(qū)域顯示不同的細(xì)節(jié)拾因。
時(shí)間軸的垂直比例是自動(dòng)管理的旺罢,并會(huì)嘗試填充窗口的垂直空間旷余。請(qǐng)注意,要詳細(xì)了解CPU使用情況區(qū)域扁达,您可以刪除“內(nèi)存”和“渲染”區(qū)域正卧。另外,可以選擇時(shí)間軸和統(tǒng)計(jì)區(qū)域之間的分離器并向下拖動(dòng)以增加用于時(shí)間軸圖表的屏幕區(qū)域跪解。
時(shí)間軸由幾個(gè)區(qū)域組成:CPU使用率炉旷,渲染和內(nèi)存。點(diǎn)擊面板上的關(guān)閉按鈕可以刪除這些區(qū)域叉讥,然后使用配置文件控制欄中的添加區(qū)域下拉菜單重新添加窘行。
請(qǐng)注意,標(biāo)簽區(qū)域中的彩色方塊可以控制是否顯示相關(guān)的時(shí)間線图仓。要從顯示屏上移除樣品罐盔,請(qǐng)點(diǎn)擊顏色鍵。密鑰將變暗救崔,數(shù)據(jù)將從圖中刪除惶看。例如捏顺,這對(duì)于確定CPU圖形中尖峰的原因很有用。
根據(jù)Profiler進(jìn)行性能優(yōu)化
一纬黎、cpu占用分析
可以看出在白色豎線定位的那一幀幅骄,Game.Update()占用了88.3%,如果想知道腳本具體調(diào)用堆棧本今,和具體的問(wèn)題出在哪拆座,需要把Deep Profiler選上進(jìn)行深度分析,當(dāng)你打開(kāi)深度分析(Deep Profile)冠息,所有腳本代碼將被分析 - 也就是說(shuō)懂拾,所有的函數(shù)調(diào)用被記錄。知道確切在你的游戲代碼中花費(fèi)的時(shí)間铐达,這是有用的岖赋。如下圖
二、內(nèi)存占用分析
在Memory欄瓮孙,可以定位到某一幀唐断,可以看到該幀時(shí)內(nèi)存使用情況,一般就是圖片占用內(nèi)存了杭抠,這只是內(nèi)存概況脸甘,要想知道具體是那個(gè)圖片占用了內(nèi)存,需要選擇Detailed
找到了是哪個(gè)圖片占用內(nèi)存了偏灿,就好辦了丹诀,開(kāi)內(nèi)存優(yōu)化。
三翁垂、內(nèi)存優(yōu)化
從profiler上可以清楚的看到哪個(gè)圖片占用多少內(nèi)存铆遭,下面就要找到這些圖片,根據(jù)實(shí)際情況對(duì)圖片進(jìn)行優(yōu)化沿猜,比如壓縮圖片枚荣,一般來(lái)說(shuō),如果不是對(duì)圖片顯示要求太高啼肩,圖片都可以進(jìn)行一定程度的壓縮橄妆。選中圖片,有一個(gè)Max Size祈坠,它是限制圖片的最大尺寸害碾,這個(gè)數(shù)值一般可以調(diào)整到圖片實(shí)際尺寸的一般,例如一張1028*720的圖片赦拘,壓縮前內(nèi)存大小為3.5MB慌随,Max Size可以設(shè)置為1024,大小變?yōu)?.3MB,基本上都可以接受另绩,甚至Max Size可以設(shè)置為512儒陨,再甚至可以進(jìn)行壓縮花嘶,大小就會(huì)變?yōu)?44KB。所以根據(jù)你的項(xiàng)目的實(shí)際情況蹦漠,做一些可以接受的大小調(diào)整和壓縮椭员,優(yōu)化效果會(huì)非常明顯。包大小也會(huì)減小很多笛园。
另外還有隘击,去掉Generate Mip Maps選項(xiàng)前面的勾
項(xiàng)目?jī)?yōu)化是一個(gè)細(xì)活活鹰,還是要多多嘗試弱匪,調(diào)整辑莫。
四规阀、包大小優(yōu)化
build以后,在Console面板最上邊點(diǎn)右鍵->Open Editor Log,打開(kāi)日志文件噪舀,在最下面找到打包記錄颅拦,它記錄了你都把什么東西打包進(jìn)去了臊恋。這樣也方便你有針對(duì)性的優(yōu)化資源逆甜。