• 极速pk10APP官网

  • 极速pk10APP官网

  • 极速pk10APP官网

  • 极速pk10APP官网

极速pk10APP官网

作者︰Alan777w  發布日(ri)期︰2020-03-31 09:30:27
Tag標(biao)簽︰性能  文檔  官(guan)方  
  •  

    极速pk10APP官网

    如果游戲(xi)運行(xing)緩慢,卡頓,我們知道游戲(xi)存在(zai)性能問(wen)題。在(zai)我們嘗(chang)試解決(jue)問(wen)題前,需要先知道引起問(wen)題的原(yuan)因。不同(tong)問(wen)題需要不同(tong)的解決(jue)方案。如果我們靠猜測或者其他項(xiang)目的經(jing)驗去解決(jue)問(wen)題,那麼(me)我們可能會浪費很多時間,甚至使得問(wen)題更(geng)嚴重。

    這時我們需要性能分析,性能分析程序測量游戲(xi)運行(xing)時的各個方面性能。通過(guo)性能分析工具,我們能夠透過(guo)游戲(xi)運行(xing)的場景(jing)表面表現,獲取深入的信息,通過(guo)這些信息,我們可以(yi)追蹤引起性能問(wen)題的原(yuan)因。通過(guo)性能分析工具,當(dang)我們修改後,我們可以(yi)測量我們的修改是否有(you)效,是否修復了性能問(wen)題。

    在(zai)本(ben)文中(zhong),我們將會︰

    -使用Unity的內置性能分析工具Profiler去收集我們的低(di)性能游戲(xi)的運行(xing)時bi)蕁/p>

    -分析數據,並追蹤引起性能問(wen)題的原(yuan)因

    -分享修復這些特定問(wen)題的文章的鏈接

    使得游戲(xi)運行(xing)快速平滑是一項(xiang)平衡(heng)性的工作。在(zai)獲取我們想要的結果前,我們可能需要好(hao)幾輪的修改,並測量效果。知道如何(he)wen)褂眯閱芊治齬?叻治鑫wen)題意味著我們能夠確(que)認哪里出了問(wen)題,並且理解接下(xia)來cong)ying)該怎麼(me)樣嘗(chang)試修改。

    极速pk10APP官网

    本(ben)文將幫(bang)助我們追蹤定位(wei)Unity游戲(xi)運行(xing)緩慢,卡頓的問(wen)題。如果我們的游戲(xi)存在(zai)其他問(wen)題,如游戲(xi)崩潰或者游戲(xi)的圖形(xing)表現不如預期所想,那麼(me)這篇文章可能不會有(you)什麼(me)幫(bang)助。如果游戲(xi)存在(zai)的問(wen)題不在(zai)本(ben)文討論範圍內,請嘗(chang)試在(zai)Unity Manual, Unity Forums or Unity Answers尋求(qiu)答案。

    如果我們還(huai)不熟悉Profiler Window的使用,請先閱讀Unity性能優化(hua)(1)-官(guan)方文檔簡譯

    极速pk10APP官网

    极速pk10APP官网

    幀率(lv)Frame rate是衡(heng)量游戲(xi)性能的mu)ji)本(ben)指標(biao)。在(zai)游戲(xi)中(zhong),一幀類(lei)似于動畫中(zhong)的一幀,它(ta)是我們游戲(xi)繪(hui)制(zhi)到(dao)屏幕(mu)上的一個靜止畫面。繪(hui)制(zhi)一幀到(dao)屏幕(mu)上叫做渲染一幀。幀率(lv),或者說(shuo)幀被(bei)渲染的有(you)多快,用FPS衡(heng)量(frames per second)。

    大多數當(dang)前游戲(xi)的目標(biao)是幀率(lv)60FPS。通常(chang)來說(shuo),幀率(lv)在(zai)30FPS以(yi)上是可以(yi)接受的,特別是對za)誆恍枰 燜俜從(cong)ying)互動的游戲(xi),例如休閑解密冒險游戲(xi)等。有(you)些項(xiang)目有(you)特殊的需求(qiu),在(zai)VR游戲(xi)中(zhong),則至少(shao)需要90FPS。當(dang)幀率(lv)shi)檔di)到(dao)30FPS以(yi)下(xia)lv)保  chang)玩家會有(you)不好(hao)的體驗;圖形(xing)可能不穩定並且感覺操作反饋不及時。盡管如此,重要的不僅僅是速度,幀率(lv)必(bi)須也非常(chang)穩定。玩家通常(chang)對幀率(lv)shi)謀浠hua)比較敏感,不穩定的幀率(lv)通常(chang)比低(di)一些但(dan)是很穩定的幀率(lv)表現更(geng)差。

    雖然(ran)幀率(lv)是一個我們談論游戲(xi)性能的mu)ji)本(ben)標(biao)準,但(dan)是當(dang)我們嘗(chang)試za)嘔hua)我們的游戲(xi)性能時,對za)諼頤搶此shuo)更(geng)有(you)用的是渲染一幀需要多少(shao)毫秒。這有(you)兩(liang)個原(yuan)因。首先,這是一個更(geng)精確(que)的度量。當(dang)我們嘗(chang)試za)嘔hua)性能時,每一毫秒計算有(you)助于我們的目標(biao)。第二,幀率(lv)shi)南嘍願(yuan)謀湓zai)不同(tong)範圍意味著不同(tong)的變化(hua)。從(cong)60到(dao)50FPS呈現出的是額外3.3毫秒的運行(xing)時間,但(dan)是從(cong)30到(dao)20FPS呈現出的是額外的16.6毫秒的運行(xing)時間。在(zai)這個例子(zi)you)校 tong)樣是降低(di)了10FPS,但(dan)是渲染一幀上時間的差別是很顯著(zhu)的。

    幀率(lv)對za)諼頤搶此shuo)可以(yi)za)糜誒斫 wei)渲染一幀必(bi)須用多少(shao)毫秒以(yi)內完成(cheng)。通過(guo)公式(shi) 1000/想要達到(dao)的幀率(lv)。通過(guo)這個公式(shi)可以(yi)得到(dao),游戲(xi)要每秒渲染30幀(30FPS),那麼(me)必(bi)須在(zai)33.3毫秒之內渲染jiu)昝懇恢 R桓0FPS運行(xing)的游戲(xi),必(bi)須在(zai)16.6毫秒內渲染jiu)昝懇恢 /p>

    要渲染每一幀,Unity必(bi)須執行(xing)很多不同(tong)的任(ren)務。簡單的說(shuo),Unity必(bi)須更(geng)新游戲(xi)的狀(zhuang)態,獲取游戲(xi)的快照並且把快照畫到(dao)屏幕(mu)上。有(you)一些任(ren)務是在(zai)每一幀都執行(xing)的,包括(kuo)讀取用戶輸入,執行(xing)腳本(ben),運行(xing)光照計算等。除此之外,有(you)許(xu)多操作是在(zai)一幀執行(xing)多次的,例如物(wu)理運算。當(dang)所有(you)這些任(ren)務都執行(xing)的足夠快時,我們的游戲(xi)才會有(you)穩定且可接受的幀率(lv)。當(dang)這些任(ren)務執行(xing)的不huai)豢焓保 秩疽恢】  煙 ?氖奔洌 ?抑÷lv)會因此下(xia)降。

    知道哪些任(ren)務花費了太長的時間執行(xing),對za)諼頤侵 澇躚?餼jue)性能問(wen)題是十分關(guan)鍵的。一旦(dan)我們知道了哪些任(ren)務降低(di)了幀率(lv),我們就(jiu)可以(yi)嘗(chang)試去優化(hua)游戲(xi)的那一部分。這就(jiu)是為(wei)什麼(me)性能分析工具這麼(me)關(guan)鍵︰性能分析工具告訴我們在(zai)一幀中(zhong)每個任(ren)務花費了多長時間。

    极速pk10APP官网

    极速pk10APP官网

    為(wei)了shuo)韃樾閱 wen)題,我們必(bi)須首先從(cong)我們游戲(xi)性能差的部分錄制(zhi)分析數據。為(wei)了精確(que)的錄制(zhi)分析數據,我們必(bi)須生成(cheng)一個development build版(ban)本(ben)的游戲(xi),並且當(dang)游戲(xi)在(zai)目標(biao)硬件上運行(xing)時進行(xing)分析。

    如果還(huai)不熟悉怎麼(me)生成(cheng)development build版(ban)本(ben)的游戲(xi),並在(zai)目標(biao)硬件上運行(xing)時進行(xing)分析,請查看這篇文章Unity性能優化(hua)(1)-官(guan)方文檔簡譯

    极速pk10APP官网

    极速pk10APP官网

    极速pk10APP官网

    如果還(huai)不熟悉怎麼(me)生成(cheng)development build版(ban)本(ben)的游戲(xi),並在(zai)目標(biao)硬件上運行(xing)時進行(xing)分析,請查看這篇文章Unity性能優化(hua)(1)-官(guan)方文檔簡譯

    -在(zai)目標(biao)設備(bei)上生成(cheng)development build。

    -當(dang)我們的游戲(xi)運行(xing)到(dao)性能出現問(wen)題的部分時開始錄制(zhi)分析。

    -一旦(dan)我們錄制(zhi)的數據包含了性能問(wen)題的樣本(ben)時,點擊Profiler窗口(kou)上部的任(ren)意位(wei)置暫(zan)停游戲(xi),並且選擇一幀。

    -在(zai)窗口(kou)上半部分,選擇展示出性能問(wen)題的那一幀。這可能是突然(ran)的低(di)幀數,也可能僅僅是持zhong)鈉匠chang)的幀數,只是比ren)頤竅M鬧 di)。我們可以(yi)使用鍵盤的左右箭(jian)頭(tou)按鍵或者Profiler上部控制(zhi)ping)傅那昂蟀磁niu)移動幀,更(geng)好(hao)的控制(zhi)選擇幀。

    description

    我們已經(jing)收集到(dao)了游戲(xi)性能不好(hao)的部分的性能數據,接下(xia)來讓我們學習怎麼(me)去分析這些數據。

    极速pk10APP官网

    在(zai)我們得到(dao)引起游戲(xi)性能問(wen)題的原(yuan)因之前,我們必(bi)須先學習怎麼(me)樣去分析顯示在(zai)Profiler窗口(kou)上的性能數據。我們知道,當(dang)Unity無(wu)法(fa)及時的完成(cheng)渲染一幀所需的全(quan)部任(ren)務時,會發生幀率(lv)shi)南xia)降。我們可以(yi)在(zai)Profiler窗口(kou)中(zhong)看到(dao)哪些任(ren)務正在(zai)執行(xing),執行(xing)任(ren)務花費的時間,以(yi)及任(ren)務執行(xing)的順序。這些信息將幫(bang)助我們理解,游戲(xi)的哪部分在(zai)渲染幀時bei) 蚜頌 ?氖奔洹/p>

    最好(hao)是實(shi)踐使用Profiler,比嘗(chang)試去按照精確(que)的順序學習要好(hao)的多。我們能夠自己理解數據的意義是很有(you)用的,這樣當(dang)我們遇到(dao)新問(wen)題時ben)jiu)可以(yi)自己調查。或者僅僅是知道在(zai)Unity Answers上怎麼(me)查找(zhao),也是一個好(hao)的開始。

    為(wei)了學習怎麼(me)去分析性能,我們將使用CPU usage profiler作為(wei)例子(zi)。當(dang)我們調查幀率(lv)問(wen)題時,這個可能是我們使用的最多的Profiler了。

    极速pk10APP官网

    當(dang)我們查看Profiler窗口(kou)的上部時,可以(yi)看到(dao)完成(cheng)每幀的任(ren)務花費了多少(shao)cpu時間。

    description

    我們可以(yi)看見花費的時間用顏(yan)色(se)標(biao)出了分類(lei)。不同(tong)的顏(yan)色(se)表示在(zai)渲染操作上花費的時間,物(wu)理運算花費的時間等等。Profiler左側(ce)表明了哪種顏(yan)色(se)代表哪類(lei)任(ren)務。

    通過(guo)下(xia)面的截圖我們可以(yi)看出,這幀中(zhong)主要的時間花費在(zai)渲染操作上。在(zai)窗口(kou)底部顯示了這幀中(zhong)所有(you)的cpu時間共消耗85.95毫秒。

    description

     

    層級視圖The Hierarchy view

    我們使用層級視圖去挖掘更(geng)深入的信息,看看在(zai)這幀中(zhong)到(dao)底是哪些任(ren)務花費了最多的cpu時間。當(dang)我們選中(zhong)CPU usage profiler時,這一幀的詳細信息會顯示在(zai)Profiler窗口(kou)的下(xia)部。我們可以(yi)在(zai)Profiler的左下(xia)的下(xia)拉菜shuo)?zhong)選擇層級視圖,這可以(yi)使我們查看cpu任(ren)務的詳細信息。

    description

    層級視圖中(zhong),可以(yi)點擊任(ren)意的列標(biao)題,按照這列xing)畔 鬧道戳信判頡@紓 慊strong>Time ms可以(yi)按照函數花費時間排序,點擊Calls可以(yi)按照當(dang)前選中(zhong)幀中(zhong)函數的執行(xing)次wen)判頡Tzai)上面的截圖中(zhong),我們按照時間排序,可以(yi)看到(dao)Camera.Render花費了最多的cpu時間。

    如果一個函數的名字(zi)左邊有(you)箭(jian)頭(tou),則可以(yi)點擊展開,查看這個函數調用了哪些其他函數,並且這些函數是怎樣影響性能的。Self ms表示函數自身(shen)的mu) 咽奔洌strong>Time ms表示這個函數以(yi)及它(ta)所調用的其他函數的總時間。

    description

    在(zai)這個例子(zi)you)校 頤強梢yi)看到(dao),在(zai)Camera.Render,最多的消耗和Shadows.RenderJob函數相關(guan)。即使我們對這個函數還(huai)不太了解,我們也已經(jing)對性能問(wen)題有(you)了很多信息了。我們知道了問(wen)題是和渲染相關(guan)的,並且最昂貴(gui)的任(ren)務是需要處理陰影。

    在(zai)層級視圖中(zhong),另一個好(hao)處是我們可以(yi)比較游戲(xi)中(zhong)的每一幀,這樣我們就(jiu)可以(yi)理解性能是怎樣隨(sui)著時間變化(hua)的。使用CPU usage profiler,我們可以(yi)跟(gen)蹤一個函數從(cong)you)〉dao)幀的cpu消耗。當(dang)我們在(zai)層級視圖中(zhong)點擊函數名字(zi)時,CPU usage profiler將在(zai)Profiler窗口(kou)上部的圖形(xing)wen)油賈zhong)高亮顯示這個函數的信息。

    description

    舉個例子(zi),如果在(zai)層級視圖中(zhong)點擊了Gfx.WaitForPresent,則和Gfx.WaitForPresent直接相關(guan)的渲染數據將會在(zai)Profiler的圖形(xing)展示中(zhong)高亮顯示。

    時間線(xian)視圖The Timeline view

    現在(zai)我們使用時間線(xian)視圖來學習更(geng)多關(guan)于我們的渲染問(wen)題的信息。時間線(xian)視圖顯示了兩(liang)件事︰cpu任(ren)務的執行(xing)順序和那個線(xian)程負責哪些任(ren)務。我們可以(yi)Profiler的左下(xia)的下(xia)拉菜shuo)?zhong)選擇時間線(xian)視圖(和選擇層級視圖位(wei)置相同(tong))。

    description

    線(xian)程允許(xu)不同(tong)的任(ren)務同(tong)時執行(xing)。當(dang)一個線(xian)程執行(xing)一個任(ren)務時,另外的線(xian)程可以(yi)執行(xing)另一個完全(quan)不同(tong)的任(ren)務。和Unity的渲染過(guo)程相關(guan)的線(xian)程有(you)三種︰主線(xian)程,渲染線(xian)程和工人線(xian)程(worker threads)。了解哪個線(xian)程負責哪些任(ren)務是很有(you)用me)Φ模閡壞dan)我們知道了在(zai)哪個線(xian)程上的任(ren)務執行(xing)的最慢,那麼(me)我們就(jiu)應(ying)該集中(zhong)努力(li)優化(hua)在(zai)那個線(xian)程上的操作。

    description

    我們可以(yi)縮放時間線(xian)視圖,來更(geng)仔細的查看單獨的任(ren)務。被(bei)調用的函數會顯示在(zai)調用他的函數的下(xia)面。在(zai)這個例子(zi)you)校 頤且丫jing)放大了去看組成(cheng)Shadows.RenderJob任(ren)務的其他獨立(li)任(ren)務。我們看到(dao)Shadows.RenderJob調用的函數發生在(zai)主線(xian)程,也可以(yi)看到(dao)jiao)?訟xian)程執行(xing)和陰影相關(guan)的任(ren)務。主線(xian)程的一個任(ren)務WaitingForJob指示出主線(xian)程正在(zai)等待工人線(xian)程完成(cheng)任(ren)務。從(cong)這里,我們可以(yi)推斷出和陰影相關(guan)的渲染操作,在(zai)主線(xian)程和工人線(xian)程,花費了太多的時間。現在(zai)和問(wen)題相關(guan)的信息我們已經(jing)了解很多了。

    其他的Profiler

    當(dang)追蹤幀率(lv)相關(guan)的性能問(wen)題時,盡管CPU usage profiler是最常(chang)用的Profiler,但(dan)是其他的Profiler也是十分有(you)用的。熟悉他們提供(gong)的信息是很好(hao)的主意。

    請嘗(chang)試按照上面的步驟(zhou)使用其他的Profiler,使用不同(tong)的視圖,學習他們每幀提供(gong)的信息。例如,嘗(chang)試使用渲染Profiler查看渲染數據是怎麼(me)逐幀變化(hua)的。

    极速pk10APP官网

    現在(zai)我們已經(jing)熟悉怎麼(me)在(zai)Profiler窗口(kou)中(zhong)讀取和tou)治魴閱蓯 耍 頤強梢yi)開始查找(zhao)引起性能問(wen)題的原(yuan)因了。

    排除垂直同(tong)步的影響

    垂直同(tong)步(VSync)用來同(tong)步游戲(xi)的幀率(lv)和屏幕(mu)的刷新率(lv)。垂直同(tong)步會影響游戲(xi)的幀率(lv),在(zai)Profiler窗口(kou)中(zhong)可以(yi)看到(dao)影響。如果我們不是特別確(que)定問(wen)題所在(zai),垂直同(tong)步的影響可能看起來像性能問(wen)題,所以(yi),在(zai)繼續查找(zhao)問(wen)題之前,應(ying)該學習怎麼(me)排除垂直同(tong)步的影響。

    极速pk10APP官网

    我們可以(yi)選擇要在(zai)CPU usage profiler中(zhong)隱藏的信息,這允許(xu)我們和忽(hu)略當(dang)前問(wen)題無(wu)關(guan)的信息。

    按如下(xia)步驟(zhou)在(zai)CPU usage profiler中(zhong)隱藏垂直同(tong)步信息︰

    -選中(zhong)CPU usage profiler。

    -在(zai)CPU usage profiler窗口(kou)中(zhong)左側(ce)點擊黃色(se)的方框,標(biao)記著垂直同(tong)步,就(jiu)可以(yi)隱藏信息。

    极速pk10APP官网

    在(zai)CPU usage profile的層級視圖中(zhong)無(wu)法(fa)隱藏垂直同(tong)步信息,但(dan)是我們可以(yi)學習他表現出什麼(me)樣子(zi),這樣我們就(jiu)能不理會他。

    當(dang)我們在(zai)層級視圖中(zhong)看見一個名為(wei)WaitForTargetFPS的函數時,這意味著我們的游戲(xi)在(zai)等待著垂直同(tong)步,我們無(wu)須調查這個函數,並安全(quan)的忽(hu)略他。

    极速pk10APP官网

    垂直同(tong)步不是在(zai)所有(you)的平台都可以(yi)關(guan)閉(bi),許(xu)多平台(例如iOS)是強制(zhi)開啟的。當(dang)我們在(zai)不強制(zhi)開啟垂直同(tong)步的平開上開發時,當(dang)我們分析性能時,可以(yi)為(wei)整個項(xiang)目關(guan)閉(bi)垂直同(tong)步。通過(guo)菜shuo)strong>Edit **> **Project Settings >Quality打開質量設置,在(zai)VSync Count的下(xia)拉菜shuo)?zhong)選擇Don’t Sync。

    description

    分析渲染

    渲染是常(chang)見的引起性能問(wen)題的原(yuan)因。當(dang)我們嘗(chang)試修復一個渲染性能問(wen)題之前,很重要的是確(que)認我們的游戲(xi)是CPU受限還(huai)是GPU受限,因為(wei)他們需要用不同(tong)的方法(fa)去解決(jue)。

    簡單的說(shuo),CPU負責決(jue)定什麼(me)東(dong)西需要被(bei)渲染,而(er)GPU負責渲染它(ta)。當(dang)渲染性能問(wen)題是因為(wei)CPU花費了太長時間去渲染一幀時,是CPU受限。當(dang)渲染性能問(wen)題是因為(wei)GPU花費了太長時間去渲染一幀時,是GPU受限。

    极速pk10APP官网

    識別是否是GPU受限的最快的方法(fa)是使用GPU usage profiler。不幸的是,並不是所有(you)的設備(bei)和驅動都支(zhi)持這個Profiler。在(zai)判斷是否是GPU受限前,我們需要先檢查GPU usage profiler在(zai)我們游戲(xi)的目標(biao)設備(bei)上是否可用。

    檢查GPU usage profiler是否可用,遵循下(xia)面的步驟(zhou)︰

    -在(zai)Profiler窗口(kou)的左上角點擊Add profiler。

    -在(zai)下(xia)拉菜shuo)?zhong)選擇GPU。

    如果目標(biao)設備(bei)不支(zhi)持,我們可以(yi)看到(dao)右側(ce)顯示信息“不支(zhi)持GPU分析”。

    description

    如果沒有(you)看到(dao)這個信息,意味著GPU usage profiler支(zhi)持我們的目標(biao)設備(bei)。在(zai)我們的例子(zi)you)校 綣PU usage profiler可用,則可以(yi)按照如下(xia)步驟(zhou)快速簡單的確(que)定游戲(xi)是否是GPU受限。

    -選中(zhong)GPU usage profiler。

    -查看區(qu)域下(xia)方中(zhong)間部分的cpu時間和gpu時間,這里顯示的是當(dang)前選擇的幀的信息。

    如果GPU時間大于CPU時間,我們可以(yi)確(que)定在(zai)游戲(xi)運行(xing)的這一幀中(zhong)是GPU受限。

    description

    如果GPU usage profiler不可用,我們仍然(ran)有(you)辦法(fa)確(que)認游戲(xi)是否是GPU受限。我們可以(yi)通過(guo)CPU佔jia)萌?que)認。如果我們看到(dao)CPU在(zai)等待GPU完成(cheng)任(ren)務,那麼(me)意味著GPU受限。我們可以(yi)通過(guo)以(yi)下(xia)步驟(zhou)︰

    -選擇CPU usage profiler。

    -在(zai)窗口(kou)下(xia)部查看選擇幀的詳細信息。

    -選擇層級視圖

    -選擇按Time ms列排序

    如果函數Gfx.WaitForPresent在(zai)CPU usage profiler中(zhong)消耗的時間最長,這表明cpu在(zai)等待gpu。也就(jiu)是說(shuo)GPU受限。

    description

    极速pk10APP官网

    如果我們已經(jing)確(que)定了是GPU受限,那麼(me)請閱讀this article學習解決(jue)方案。

    极速pk10APP官网

    如果到(dao)這里還(huai)沒有(you)識別出游戲(xi)性能問(wen)題的原(yuan)因,讓我們現在(zai)調查cpu相關(guan)的渲染問(wen)題。

    -選擇CPU usage profiler。

    -在(zai)Profiler窗口(kou)的上部,檢查代表渲染的顏(yan)色(se)的數據。我們可以(yi)點擊顏(yan)色(se)方塊隱藏或顯示不同(tong)種類(lei)的信息。

    在(zai)慢的幀中(zhong),如果一大部分時間都花費在(zai)渲染上,那麼(me)表示ju)秩疽鵒宋wen)題。我們可以(yi)按照下(xia)面的步驟(zhou)進一步挖掘性能信息︰

    -選擇CPU usage profiler。

    -檢查窗口(kou)下(xia)方選中(zhong)幀的詳細信息。

    -選擇層級視圖。

    -點擊Time ms列,把函數按消耗時間排序。

    -點擊列表中(zhong)最上xi)降暮 /p>

    如果選中(zhong)的函數是一個渲染函數,那麼(me)CPU profiler會高亮渲染部分。如果是這個原(yuan)因,那麼(me)意味著是渲染相關(guan)的操作引起了游戲(xi)的性能表現,並且yi)謖庖恢 PU受限的。注(zhu)意函數名和函數是在(zai)哪個線(xian)程執行(xing)的,這些信息當(dang)我們嘗(chang)試修復問(wen)題時bi) 鐘you)用。

    极速pk10APP官网

    如果我們已經(jing)確(que)定了是CPU受限,那麼(me)請閱讀this article學習解決(jue)方案。

    极速pk10APP官网

    接下(xia)來,我們檢查是否是垃圾回收zhao)鸕男閱芷烤薄@ 厥帳嗆nity自動內存管理相關(guan)的功能,這可能是一個慢的操作。

    -點擊選擇CPU usage profiler

    -在(zai)Profiler窗口(kou),CPU usage profiler左側(ce),可以(yi)點擊有(you)顏(yan)色(se)的下(xia)方快,控制(zhi)顯示或者隱藏相關(guan)的信息,也可以(yi)拖動他,按照自己的意願(yuan)排序。在(zai)下(xia)面的截圖中(zhong),我們隱藏了垃圾回收器意外的所有(you)其他信息,並且把垃圾回收器拖動到(dao)了最上xi)健/p>

    description

    如果在(zai)一個慢的幀中(zhong),一大部分時間被(bei)垃圾回收消耗,這指示著我們可能存在(zai)著垃圾回收過(guo)多的問(wen)題。我們可以(yi)更(geng)加(jia)深入的分析數據來確(que)認。

    -選中(zhong)CPU usage profiler,查看下(xia)方窗口(kou)顯示的關(guan)于當(dang)前選中(zhong)幀的詳細信息。

    -選擇層級視圖

    -選擇按照Time ms排序

    如果函數GC.Collect()出現在(zai)最上xi)劍 ?一 蚜斯guo)多的cpu時間,那麼(me)我們可以(yi)確(que)認垃圾回收是我們游戲(xi)的問(wen)題所在(zai)。

    极速pk10APP官网

    如果我們確(que)定了游戲(xi)存在(zai)垃圾回收的問(wen)題,請閱讀this article學習解決(jue)方案。

    极速pk10APP官网

    到(dao)此為(wei)止,如果我們排除了渲染問(wen)題和垃圾回收問(wen)題,那麼(me)讓我們查看復雜(za)的物(wu)理運算是不是問(wen)題所在(zai)。

    -點擊選擇CPU Usage profiler

    -在(zai)Profiler窗口(kou),CPU usage profiler左側(ce),可以(yi)點擊有(you)顏(yan)色(se)的下(xia)方快,控制(zhi)顯示或者隱藏相關(guan)的信息,我們關(guan)注(zhu)物(wu)理信息(橙色(se))

    如果在(zai)一個慢的幀中(zhong),一大部分時間被(bei)物(wu)理運算消耗,這指示著物(wu)理運算可能引起了性能問(wen)題。我們可以(yi)更(geng)加(jia)深入的分析數據來確(que)認。

    -選中(zhong)CPU usage profiler,查看下(xia)方窗口(kou)顯示的關(guan)于當(dang)前選中(zhong)幀的詳細信息。

    -選擇層級視圖

    -選擇按照Time ms排序

    -點擊信息列表的最上xi)劍   zhong)

    如果是物(wu)理函數,那麼(me)在(zai)Profiler上xi)交岣 廖wu)理運算的部分。如果是這種情況,說(shuo)明游戲(xi)的性能問(wen)題是和物(wu)理運算相關(guan)的。

    极速pk10APP官网

    如果確(que)定了性能問(wen)題是物(wu)理運算引起的,那麼(me)下(xia)面幾個資源將有(you)助于解決(jue)問(wen)題︰

    -This page of the Unity Manual,雖然(ran)是寫給iOS開發者的,但(dan)是其中(zhong)一些物(wu)理優化(hua)的提示是對所有(you)Unity游戲(xi)都適用的。

    -This tutorial on optimising physics in a Unity game,包含一些有(you)幫(bang)助的提示。

    -Unite 2012 talk on optimization中(zhong)講物(wu)理的一節(jie),包含了一些常(chang)見的物(wu)理問(wen)題的有(you)用的總結。

    极速pk10APP官网

    現在(zai)讓我們檢查,慢或者過(guo)于復雜(za)的腳本(ben)是否是引起性能問(wen)題的原(yuan)因。腳本(ben),在(zai)這里,指的是非Unity引擎的代碼。這通常(chang)意味著我們自己寫的腳本(ben),或者是一些我們在(zai)項(xiang)目中(zhong)使用的插件的代碼。

    -點擊選擇CPU Usage profiler

    -在(zai)Profiler窗口(kou),CPU usage profiler左側(ce),可以(yi)點擊有(you)顏(yan)色(se)的下(xia)方快,控制(zhi)顯示或者隱藏相關(guan)的信息,我們關(guan)注(zhu)腳本(ben)信息

    如果在(zai)一個慢的幀中(zhong),一大部分時間被(bei)腳本(ben)運行(xing)消耗,這指示著這些慢的用戶腳本(ben)可能引起了性能問(wen)題。我們可以(yi)更(geng)加(jia)深入的分析數據來確(que)認。

    -選中(zhong)CPU usage profiler,查看下(xia)方窗口(kou)顯示的關(guan)于當(dang)前選中(zhong)幀的詳細信息。

    -選擇層級視圖

    -選擇按照Time ms排序

    -點擊信息列表的最上xi)劍   zhong)

    如果是用戶腳本(ben)的函數,那麼(me)在(zai)Profiler上xi)交岣 兩(liang)瘧ben)的部分。如果是這種情況,說(shuo)明游戲(xi)的性能問(wen)題是和用戶腳本(ben)相關(guan)的。

    請注(zhu)意,這里有(you)一個意外情況︰如果我們游戲(xi)包含和渲染相關(guan)的代碼,例如屏幕(mu)後期效果腳本(ben)或者OnWillRenderObject 或者 OnPreCull函數中(zhong)的代碼,Profiler上xi)嬌贍芑岣 齡秩臼藎 er)不是腳本(ben)數據。

    盡管這可能會最初會造成(cheng)一點困惑,但(dan)是在(zai)層級視圖和時間線(xian)視圖中(zhong),通常(chang)我們可以(yi)追蹤到(dao)負責任(ren)的代碼。

    极速pk10APP官网

    如果我們確(que)認了是腳本(ben)引起的性能問(wen)題,這里有(you)一些可以(yi)改進性能的技巧,推薦幾個腳本(ben)優化(hua)的資源如下(xia)︰

    -This page in the Unity Manual 聚(ju)焦(jiao)移動平台的腳本(ben)優化(hua),但(dan)是其中(zhong)的建(jian)議(yi)對所有(you)的開發者都是有(you)用的。

    -This page in the Unity Manual 包含了一些如何(he)在(zai)用戶腳本(ben)中(zhong)避免昂貴(gui)的函數調用的建(jian)議(yi)。

    -Unite 2012 talk on optimization 包含一些常(chang)見腳本(ben)問(wen)題的有(you)用的總結。

    极速pk10APP官网

    盡管我們已經(jing)討論了四種最常(chang)見的引起性能問(wen)題的原(yuan)因,我們的游戲(xi)仍然(ran)有(you)可能遇到(dao)和這些方面不相關(guan)的問(wen)題。如果是這種情況,我們應(ying)該遵循上面的方法(fa)解決(jue)問(wen)題︰收集數據,使用CPU usage profiler調查信息,找(zhao)到(dao)引起問(wen)題的函數。一旦(dan)我們知道了引起問(wen)題函數的名字(zi),我們可以(yi)在(zai)Unity Manual, Unity Forums or Unity Answers中(zhong)查找(zhao)函數的相關(guan)信息,這也許(xu)會節(jie)省您花費的時間。

    极速pk10APP官网

About IT165 -廣(guang)告服(fu)務 -隱私聲明 -版(ban)權申明 -免責條款 -網站地圖 -網友(you)投稿 -聯系方式(shi)
本(ben)站內容來自za)諢? 僅供(gong)用于網絡技術(shu)學習,學習中(zhong)請遵循相關(guan)法(fa)律法(fa)規
极速pk10APP官网 | 下一页