Unity3D性能消耗分析器.docx
- 文档编号:24103968
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:15
- 大小:600.44KB
Unity3D性能消耗分析器.docx
《Unity3D性能消耗分析器.docx》由会员分享,可在线阅读,更多相关《Unity3D性能消耗分析器.docx(15页珍藏版)》请在冰豆网上搜索。
Unity3D性能消耗分析器
分析器(仅专业版)Profiler(Proonly)
Date:
2021-02-2504:
56
TheUnityProfilerhelpsyoutooptimizeyourgame.Itreportsforyouhowmuchtimeisspentinthevariousareasofyourgame.Forexample,itcanreportthepercentageoftimespentrendering,animatingorinyourgamelogic.
Unity分析器能够帮忙你优化你的游戏。
它为您报告在你的游戏的各个领域所花费的时刻。
例如,它能够报告渲染、动画或在你的游戏逻辑花费时刻的百分比。
YoucanplayyourgameintheEditorwithProfilingon,anditwillrecordperformancedata.TheProfilerwindowthendisplaysthedatainatimeline,soyoucanseetheframesorareasthatspike(takemoretime)thanothers.Byclickinganywhereinthetimeline,thebottomsectionoftheProfilerwindowwilldisplaydetailedinformationfortheselectedframe.
在编辑器中,你能够将你的游戏在分析器运行着的状态下运行,它会记录性能数据。
分析器窗口,在时刻轴上显示数据,因此你能够看到帧或区域峰值(比其他需要更多的时刻)。
在时刻轴中的任何地址按一下,分析器窗口的底部区域会显示选定的帧的详细信息。
Notethatprofilinghastoinstrumentyourcode.Thisinstrumentationhasasmallimpactontheperformanceofyourgame.Typicallythisoverheadissmallenoughtonotaffectthegameframerate.Whenusingprofilingitistypicaltoconsideronlytheratio(orpercentage)oftimespentincertainareas.Also,toimproveperformancefocusonthosepartsofthegamethatconsumethemosttime.Compareprofilingresultsbeforeandaftercodechangesanddeterminetheimprovementsyoumeasure.Sometimeschangesyoumaketoimproveperformancemighthaveanegativeeffectonframerate;unexpectedconsequencesofcodeoptimizationshouldbeexpected.
请注意,分析时必需检测你的代码。
这检测会对你的游戏性能有小小阻碍。
通常情形下,这种开销是足够小,可不能阻碍游戏的帧率。
当利用分析时,它是典型的考虑时刻花费在某些领域的比例(或百分比)。
另外,为了提高性能,重点在游戏消耗的时刻最多的那些部份。
代码更改前后比较分析结果,并确信您测量的改良。
有时,您所做的更改来提高性能,可能对帧速度有负面阻碍;应估量代码优化的意外的后果。
Profilerwindow
AttachingtoUnityplayers附加到Unity播放器
Toprofileyourgamerunningonanotherdeviceoraplayerrunningonanothercomputer,itispossibletoconnecttheeditortothatotherplayer.ThedropdownActiveProfilerwillshowallplayersrunningonthelocalnetwork.Theseplayersareidentifiedbyplayertypeandthehostnamerunningtheplayer"iPhonePlayer(TomsiPhone)".Tobeabletoconnecttoaplayer,theplayermustbelaunchedwiththeDevelopmentBuildcheckboxfoundintheBuildSettingsdialog.FromhereitisalsopossibletotickacheckboxtomaketheEditorandPlayerAutoconnectatstartup.
要分析你的游戏运行在其他设备上或在另一台运算机上运行的播放器,能够连接编辑器到其他播放器。
Active
Profiler下拉菜单显示在本地网络上运行的所有播放器。
这些播放器通过播放器的类型和运行播放器的主机名"iPhonePlayer(TomsiPhone)"被识别。
要能够连接到一个播放器,播放器必需在BuildSettings对话框中找到DevelopmentBuild复选框勾上的情形下打包生成。
从那个地址也能够勾选一个复选框,使编辑器和播放器在启动时自动连接。
ProfilerControls分析器控件
Profilercontrolsareinthetoolbaratthetopofthewindow.Usethesetoturnprofilingonandoff,navigatethroughprofiledframesandsoon.Thetransportcontrolsareatthefarrightendofthetoolbar.Notethatwhenthegameisrunningandtheprofileriscollectingdataclickingonanyofthesetransportcontrolswillpausethegame.Thecontrolsgotothefirstrecordedframe,steponeframeback,steponeframeforwardandgotothelastframerespectively.Theprofilerdoesnotkeepallrecordedframes,sothenotionofthefirstframeshouldreallybethoughofastheoldestframethatisstillkeptinmemory.The"current"transportbuttoncausestheprofilestatisticswindowtodisplaydatacollectedinreal-time.TheActiveProfilerpopupmenuallowsyoutoselectwhetherprofilingshouldbedoneintheeditororaseparateplayer(forexample,agamerunningonanattachediOSdevice).
分析器控件在窗口顶部的工具栏。
利用这些控件打开和关闭分析,阅读分析好的帧等。
传输控件在工具栏的最右端。
请注意,当游戏运行、分析器搜集数据时,点击任何这些传输控件(那两个小箭头)将暂停游戏。
控件转到记录的第一帧,一步一帧向前(左箭头),一步一帧向后(右箭头),别离去到最后一帧。
分析器不保留所有记录的帧,因此第一帧的概念,事实上应该是仍然保留在内存中的最旧的一帧。
"current"按钮会使得分析统计窗口显示实时搜集的数据。
激活分析器(ActiveProfiler)弹出菜单让你选择是不是应在编辑器或一个或独立播放器进行分析(例如,一个游戏运行在iOS设备)。
DeepProfiling深度分析
WhenyouturnonDeepProfile,allyourscriptcodeisprofiled-thatis,allfunctioncallsarerecorded.Thisisusefultoknowwhereexactlytimeisspentinyourgamecode.
当你打开深度分析(DeepProfile),所有脚本代码将被分析-也确实是说,所有的函数挪用被记录。
明白确切在你的游戏代码中花费的时刻,这是有效的。
NotethatDeepProfilingincursaverylargeoverheadandusesalotofmemory,andasaresultyourgamewillrunsignificantlyslowerwhileprofiling.Ifyouareusingcomplexscriptcode,DeepProfilingmightnotbepossibleatall.Deepprofilingshouldworkfastenoughforsmallgameswithsimplescripting.IfyoufindthatDeepProfilingforyourentiregamecausestheframeratetodropsomuchthatthegamebarelyruns,youshouldconsidernotusingthisapproach,andinsteadusetheapproachdescribedbelow.Youmayfinddeepprofilingmorehelpfulasyouaredesigningyourgameanddecidinghowtobestimplementkeyfeatures.NotethatforlargegamesdeepprofilingmaycauseUnitytorunoutofmemoryandsoforthisreasondeepprofilingmaynotbepossible.
注意深度分析(DeepProfiling)会造成超级大的开销,并利用大量的内存,结果你的游戏在分析同时运行明显变慢。
假设是您利用的是复杂的脚本代码,深度分析可能可不能完全有效。
深度分析为利用简单的脚本的小游戏工作足够快。
假设是您觉察您的整个游戏在深度分析时运行,致使帧速度下降很多,以至于游戏几乎不能运行,你应该考虑不采纳这种方式,而是利用下面描述的方式。
您可能会觉察深度分析更有利于设计你的游戏,并确信如何最好地实现关键特性。
注意深度分析,关于大型游戏可能会致使Unity耗尽内存,基于那个缘故,深度分析未必有效。
ManuallyprofilingblocksofyourscriptcodewillhaveasmalleroverheadthanusingDeepProfiling.Useandscriptingfunctionstoenableanddisableprofilingaroundsectionsofcode.
手动分析脚本代码块比利用深度分析产生更小的开销。
利用和函数,启用和禁用分析代码段(从到间的代码)。
ViewSyncTime查看SyncTime
Whenrunningatafixedframerateorrunninginsyncwiththeverticalblank,Unityrecordsthewaitingtimein"WaitForTargetFPS".Bydefaultthisamountoftimeisnotshownintheprofiler.Toviewhowmuchtimeisspent
waiting,youcantoggle"ViewSyncTime".Thisisalsoameasureofhowmuchheadroomyouhavebeforelosingframes.
当运行在一个固定的帧率或带垂直空白同步运行,Unity在"WaitForTargetFPS"记录等待时刻,默许情形下,该段时刻没有显示在分析器。
要查看等待花费多少时刻,您能够切换"ViewSyncTime"。
这也是衡量多少余量你之前丢失帧。
ProfilerTimeline分析器时刻轴
TheupperpartoftheProfilerwindowdisplaysperformancedataovertime.Whenyourunagame,dataisrecordedeachframe,andthehistoryofthelastseveralhundredframesisdisplayed.Clickingonaparticularframewilldisplayit'sdetailsinthelowerpartofthewindow.Differentdetailsaredisplayeddependingonwhichtimelineareaiscurrentlyselected.
分析器窗口的上部显示随着时刻的推移的性能数据。
当您运行游戏,每一帧数据被记录,最后那么会显示几百帧的历史。
点击一个特定的帧上,该帧的细节将显示在窗口的下部。
具体取决于当前选定的时刻轴区域显示不同的细节。
Theverticalscaleofthetimelineismanagedautomaticallyandwillattempttofilltheverticalspaceofthewindow.NotethattogetmoredetailinsaytheCPUUsageareayoucanremovetheMemoryandRenderingareas.Also,thesplitterbetweenthetimelineandthestatisticsareacanbeselectedanddraggeddownwardtoincreasethescreenareausedforthetimelinechart.
时刻轴的垂直刻度是自动治理,并尝试填补窗口的垂直空间。
请注意,要取得更多关于CPU的利用率(CPUUsage)的细节,您能够删除内存(Memory)和渲染(Rendering)区域。
另外,时刻轴和统计区域之间的分离器能被选择和向下拖动,为时刻轴图表增加屏幕面积。
Thetimelineconsistsofseveralareas:
CPUUsage,RenderingandMemory.Theseareascanberemovedbyclickingtheclosebuttoninthepanel,andre-addedagainusingtheAddAreadropdownintheProfileControlsbar.
时刻轴包括几个方面:
CPU利用率,渲染和内存。
这些区域能够在面板上按一下关闭按钮删除和在分析控件(ProfileControls)工具栏中利用AddArea下拉菜单再次从头添加。
CPUUsageArea(CPU利用率区域)
TheCPUUsageareadisplayswheretimeisspentinyourgame.Whenitisselected,thelowerpanedisplayshierarchicaltimedatafortheselectedframe.
CPU利用率区域显示你的游戏在哪里花费时刻。
当那个区域被选中,下部窗格中显示选定的帧层次化的时刻数据。
∙Hierarchymode:
Displayshierarchicaltimedata.
∙层级模式(Hierarchymode):
显示层次化的时刻数据。
∙GroupHierarchymode:
Groupstimedataintologicalgroups(Rendering,Physics,Scriptsetc.).Becausechildrenofanygroupcanbeindifferentgroup.somescriptmightcallrenderingfunctions),thepercentagesofgrouptimesoftenadduptomorethan100%.(Thisisnotabug.)
∙组层级模式(GroupHierarchymode):
成逻辑组的组时刻数据(渲染(Rendering),物理(Physics),脚本(Scripts)等)。
因为任何组的子成员,可在不同的组(例如一些脚本可能挪用渲染功能),组时刻的百分比往往加起来超过100%。
(这不是一个错误。
)
ThewaytheCPUchartisstackedcanbereorderedbysimplydraggingchartlabelsup&down.
CPU的利用率(CPUUsage)图表堆叠方式,能够通过简单的上下拖动图表标签进行从头排序。
Whenanitemisselectedinthelowerpane,it'scontributiontotheCPUchartishighlighted(andtherestaredimmed).Clickingonanitemagainde-selectsit.
当在下部窗格被选择一个项目,对应到CPU的利用率(CPUUsage)图表上会高亮显示(和其余部份为灰色)。
再次点击那个项目就会取消选择。
isselectedandit'scontributionishighlightedinthechart.
被选中,图表中高亮显示。
Inthehierarchicaltimedatatheselftimereferstotheamountoftimespentinaparticularfunctionnotincludingthetimespentcallingsub-functions.Inthescreenshotabove,forexample%oftimeisspentinthefunction.Thisfunctiondoesalotofworkandcallsthevariousdrawingandcullingfunctions.Excludingallthesefunctionsonly%oftimeisspentactuallyinthefunction.
在分层的时刻数据的自我时刻(selftime)指花费在特定函数的时刻,不包括挪用子函数所花费的时刻。
在上面的截图,例如%的时刻花费在函数。
那个函数做了很多工作,并挪用各类画图和剔除的函数。
事实上排除所有这些功能只有%的时刻花费在函数。
RenderingArea渲染区域
TheRenderingareadisplaysrenderingstatistics.TheNumberofDrawCalls,TrianglesandVerticesrenderedisdisplayedgraphicalinthetimeline.TheLowerpanedisplaysmorerenderingstatisticsandthesemorecloselymatchtheonesshownintheGameViewwindow.
渲染区域显示渲染统计数据。
DrawCalls,三角形和极点渲染数量,在时刻轴上显示以图形的方式。
下部窗格中显示更多渲染统计数据,这些数据与在游戏视图显示的数据相匹配。
MemoryArea内存区域
TheMemoryareadisplayssomememoryusagedata:
内存区域显示一些内存利用的数据:
∙TotalAllocatedisthetotalRAMusedbytheapplication.NotethatintheUnityEditorthisismemoryusedbyeverythingintheeditor;gamebuildswillusemuchless.
∙总分派(TotalAllocated)是应用程序所利用的总内存。
请注意,在Unity编辑器,这是在编辑器中的一切利用的内存;游戏构建后将利用少得多的内存。
∙TextureMemoryistheamountofvideomemoryusedbythetexturesinthecurrentframe.
∙纹理内存(TextureMemory)是在当前帧中纹理占用的显存大小。
∙ObjectCountisthetotalnumberofObjectsthatarecreated.Ifthisnumberrisesovertimethenitmeansyourgameiscreatingsomeobjectsthatareneverdestroyed.
∙对象数(ObjectCount)是所创建的对象的总数。
假设是那个数字随时刻不断上升,那么它
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Unity3D 性能 消耗 分析器