Unity-Profiler性能分析器

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 窗口

ProfilerWindow2.png
  • 連接到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控件


    ProfilerControls.png

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í)間線


    ProfilerTimeline.png

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占用分析

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í)間铐达,這是有用的岖赋。如下圖

cpu

二、內(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ì)減小很多笛园。

內(nèi)存優(yōu)化
內(nèi)存優(yōu)化
內(nèi)存優(yōu)化
內(nèi)存優(yōu)化

另外還有隘击,去掉Generate Mip Maps選項(xiàng)前面的勾

Mip Maps

項(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)化資源逆甜。

包大小
包大小
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末虱肄,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子交煞,更是在濱河造成了極大的恐慌咏窿,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件素征,死亡現(xiàn)場(chǎng)離奇詭異集嵌,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)御毅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)根欧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人亚享,你說(shuō)我怎么就攤上這事咽块』婷妫” “怎么了欺税?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)揭璃。 經(jīng)常有香客問(wèn)我晚凿,道長(zhǎng),這世上最難降的妖魔是什么瘦馍? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任歼秽,我火速辦了婚禮,結(jié)果婚禮上情组,老公的妹妹穿的比我還像新娘燥筷。我一直安慰自己箩祥,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布肆氓。 她就那樣靜靜地躺著袍祖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谢揪。 梳的紋絲不亂的頭發(fā)上蕉陋,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音拨扶,去河邊找鬼凳鬓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛患民,可吹牛的內(nèi)容都是我干的缩举。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼匹颤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蚁孔!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起惋嚎,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤杠氢,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后另伍,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鼻百,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年摆尝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了温艇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡堕汞,死狀恐怖勺爱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情讯检,我是刑警寧澤琐鲁,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站人灼,受9級(jí)特大地震影響围段,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜投放,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一奈泪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦涝桅、人聲如沸拜姿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)砾隅。三九已至,卻和暖如春债蜜,著一層夾襖步出監(jiān)牢的瞬間晴埂,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工寻定, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留儒洛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓狼速,卻偏偏與公主長(zhǎng)得像琅锻,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子向胡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容