Version: 2020.1
Audio Profiler module
전역 조명 프로파일러 모듈

CPU Usage Profiler module

CPU 사용 프로파일러 모듈은 애플리케이션에서 시간을 소비한 위치를 표시하는 차트를 제공합니다. 이 모듈은 애플리케이션이 시간을 소비하는 모든 주요 영역(예: 렌더링, 스크립트, 애니메이션)에 대한 개요를 제공합니다. 문서의 이 섹션에서는 다음의 주제를 다룹니다.

차트 카테고리

CPU 사용 프로파일러 모듈의 차트는 애플리케이션의 메인 스레드에 사용된 시간을 추적합니다. 타이밍은 9개 카테고리로 나뉩니다. 차트의 카테고리 순서를 변경하려면 차트 범례에 카테고리를 끌어다 놓으십시오. 카테고리의 컬러 범례를 클릭하여 표시 여부를 토글할 수도 있습니다.

CPU 사용 프로파일러 모듈
CPU 사용 프로파일러 모듈
카테고리 설명
Rendering 애플리케이션이 그래픽스 렌더링에 소비하는 시간입니다.
Scripts 애플리케이션이 스크립트 실행에 소비하는 시간입니다.
Physics 애플리케이션이 물리 엔진에 소비하는 시간입니다.
Animation 애플리케이션이 스킨드 메시 렌더러, 게임 오브젝트, 애플리케이션 내 기타 컴포넌트에 소비하는 시간입니다. 여기에는 Animation 및 Animator 컴포넌트가 사용하는 시스템의 계산에 소비된 시간도 포함됩니다.
GarbageCollector 애플리케이션이 가비지 컬렉터 실행에 소비하는 시간입니다.
VSync 애플리케이션이 targetFrameRate 또는 동기화할 다음 VBlank를 기다리는 데 프레임당 소비한 시간입니다. 이는 QualitySettings.vSyncCount 값, 타겟 프레임 속도, 또는 애플리케이션이 실행되는 플랫폼의 기본 또는 강제 VSync 설정을 따릅니다. VSync에 대한 자세한 내용은 렌더링 및 VSync 샘플 문서의 섹션을 참조하십시오.
Global Illumination 애플리케이션이 조명에 소비하는 시간입니다.
UI How much time your application spends on displaying its UI.
Others How much time your application spends on code that does not fall into any of the other categories. This includes areas like the entire EditorLoop, or the Profiling overhead when you profile Play Mode in the Editor.

모듈 세부 정보 창

When you select the CPU Usage module, the details pane below it displays a breakdown of where the application spent time in the selected frame. You can display the timing data as either a timeline or a hierarchical table. To change the display, use the top-left dropdown in the details pane (set to Timeline by default). The three views available are:

기능
Timeline Displays a breakdown of the timings for a particular frame, alongside a time axis of the frame’s length. This is the only view mode that you can use to see timings on all threads at once and at the times within the frame at which they happened, so that you can correlate timings across threads (for example, Job System worker threads starting up after a system on the main thread schedules them).
Hierarchy Groups the timing data by its internal hierarchical structure. This option displays the elements that your application called in a descending list format, ordered by the time spent by default. You can also order the information by the amount of scripting memory allocated (GC Alloc), or the number of calls. To change the column that orders the table, click the table column’s header.
Raw Hierarchy 타이밍 데이터를 타이밍이 발생한 호출 스택과 유사한 계층 구조로 표시합니다. Unity는 계층 구조 뷰에서와 같이 각 호출 스택을 병합하지 않고 이 모드에서 개별적으로 나열합니다.

Live setting

The Live setting, which is available in each of the views, displays the information about the current or selected frame in the module details pane when you start recording new data in Playmode or the Editor. To enable this, click the Live button next to the module details dropdown. By default, this setting is disabled, and the module details pane is blank when you record data. Note: This setting increases the overhead of the EditorLoop when the Profiler window is repainted.

Show Full Scripting Method Names setting

Additionally, in each view, you can select the More Items menu (⋮) and enable Show Full Scripting Method Names, which then displays the fully qualified names for all scripting methods (Assembly::Class::MethodName).

A: Scripting methods in the Hierarchy view and Timeline view without Show Full Scripting Method Names enabled<br/> B: Scripting methods in the Hierarchy view and Timeline view with Show Full Scripting Method Names enabled
A: Scripting methods in the Hierarchy view and Timeline view without Show Full Scripting Method Names enabled
B: Scripting methods in the Hierarchy view and Timeline view with Show Full Scripting Method Names enabled

타임라인(Timeline) 뷰

CPU 사용 프로파일러 모듈과 타임라인 뷰
CPU 사용 프로파일러 모듈과 타임라인 뷰

The Timeline view is the default view for the CPU Usage Profiler module. It contains an overview of where time is spent in your application and how the timings relate to each other. The Timeline view displays profiling data from all threads in their own subsections and along the same time axis, unlike the Hierarchy views. The Hierarchy views only display profiling data one thread at a time, defaulting to the main thread. Also, these views only show a sample’s duration, whereas the Timeline view shows at which times each sample occurred.

타임라인 뷰를 사용하여 병렬 실행 시 다른 스레드의 동작 간의 상관 관계를 확인할 수 있습니다. 또한 잡 시스템의 워커 스레드를 비롯한 다른 스레드를 사용하는 정도, 스레드 작업이 대기열에 들어가는 방식, 유휴 상태의 스레드 (Idle 샘플) 또는 다른 스레드나 잡이 완료되기를 기다리는 스레드(Wait for x 샘플)가 있는지 여부를 파악할 수 있습니다.

Navigating and selecting items

To zoom in on areas of the time axis, use the scroll wheel on your mouse, or press and hold the Alt key while you drag with the right mouse button pressed down. You can also use the ends of the horizontal scrollbar to zoom in. Press the A key on your keyboard to reset the zoom so that the entire frame time is visible.

Whenever you see a white arrow on the bottom of a thread, you can click it to unfold the thread to show all lines, or click again to show only the top ones. You can also drag the line that separates the threads to readjust how many lines you can see. Double-clicking the line sets the height of the thread’s section to the maximum depth of the call stack. To pan the view, press the middle mouse button, or hold the Alt key (Command key on macOS) and press the left mouse button.

스레드 그룹을 접거나 펼치려면 뷰의 왼쪽 끝에 있는 스레드 이름 옆의 폴드아웃 화살표를 클릭하십시오.

To see an item’s contribution to the CPU chart, select it in the lower pane. The Profiler highlights its contribution, and dims the rest of the chart. To deselect the item, click elsewhere in the view. Press the F key to focus the current sample you selected, or to show the default zoom level if you’ve selected nothing.

선택된 항목이 있는 타임라인 뷰의 CPU 사용 모듈
선택된 항목이 있는 타임라인 뷰의 CPU 사용 모듈

위 이미지에서 선택된 항목의 툴팁은 모든 스레드에서 이 샘플의 총 시간, 인스턴스 수 등과 같은 추가 세부 정보를 제공합니다. GC.Alloc 샘플은 자홍색으로 표시되며 할당 크기를 보여줍니다.

툴팁에 관리되는 호출 스택을 표시하려면 프로파일러 창의 툴바로 이동한 후 Call Stacks 버튼을 선택하십시오. 반드시 이 프로퍼티를 활성화한 후 프레임을 프로파일링하여 프레임의 호출 스택을 표시해야 합니다. 자세한 내용은 할당 호출 스택 섹션을 참조하십시오.

Flow Events

To help you visualize how Unity schedules jobs across threads, you can use the Flow Events setting. This setting displays the relationship between systems, jobs and threads. To enable this setting, select the More menu (⋮) in the top right of the Timeline view pane, and then select Show Flow Events.

When you enable this setting, the Profiler adds white event markers to the Profiler samples that schedule jobs, or wait on scheduled jobs to complete. It also darkens unrelated samples so that you can more easily visualize the sample you select.

There are three types of arrows the Profiler adds to the samples:

  • Down arrow: Indicates the beginning of a flow, and that this sample scheduled some work.
  • Right arrow: Indicates the next item in a flow, and that a different sample scheduled this.
  • Up arrow: Indicates the end of a flow, and that the work ended or synchronized on this sample.
The Timeline CPU Profiler view with Flow Events enabled. Note the white event markers on some of the Profiler samples.
The Timeline CPU Profiler view with Flow Events enabled. Note the white event markers on some of the Profiler samples.

When you select a sample, the Profiler connects the relevant flow event markers together with lines. A thicker line highlights the particular flow line you select. For example, if a begin sample points to two other next samples, when you click one of the next samples, the Profiler draws a thicker line to it.

This view is useful to discover the flow of execution of your code, what work was being waited on to complete, and helps you uncover the dependencies of your code in a visual way.

The Timeline CPU Profiler view with Flow Events enabled and a sample selected.
The Timeline CPU Profiler view with Flow Events enabled and a sample selected.

Hierarchy and Raw Hierarchy view

계층 구조 또는 원시 계층 구조 뷰로 전환하면 해당 샘플이 메인 스레드에 있는 한 선택 항목이 계속 이어집니다. 선택 항목을 즉시 찾을 수 없으면 F 키를 눌러 포커스를 맞추십시오.

CPU 사용 프로파일러 모듈과 계층 구조 뷰
CPU 사용 프로파일러 모듈과 계층 구조 뷰

The Hierarchy view lists all samples you have profiled and groups them together by their shared call stack and the hierarchy of ProfilerMarkers. The Raw Hierarchy view does not group samples together, which makes it ideal for looking into samples on a granular level. You can also use the Thread dropdown to select a specific thread, like the Main Thread or Render Thread to inspect in these views.

By default, all EditorOnly samples are collapsed in these views. EditorOnly samples are samples in the Player Loop that only happen because of Editor-only safety checks. When the samples are collapsed, their GC.Alloc value does not contribute to the GC.Alloc value of their enclosing sample. To display these samples, select the More Items menu (⋮) in the top right of the details pane, and then disable the Collapse EditorOnly Samples setting. For more information, see the Editor only samples section of this documentation.

Both views display the following detailed information for each item in the Hierarchy, next to each row:

프로퍼티 기능
Total Unity가 특정 함수에 소비한 총 시간(백분율)입니다.
Self The total amount of time Unity spent on a particular function as a percentage, excluding the time Unity spends calling sub-functions.

For example, in the screenshot, 16.7% of time is spent in the Camera.Render function. This is because it calls a lot of drawing and culling functions. However, when you exclude the functions it calls, only 0.2% of time is spent on the Camera.Render function itself.
Calls 이 프레임에서 이 함수를 호출한 횟수입니다. Raw Hierarchy 뷰에서 이 열의 값은 항상 1이며, 이는 프로파일러가 샘플의 계층 구조를 병합하지 않기 때문입니다.
GC Alloc Unity가 현재 프레임에 할당한 스크립팅 힙 메모리의 양입니다. 스크립팅 힙 메모리는 가비지 컬렉터에서 관리합니다.

Unity가 GC.Collect()를 호출할 때마다 또는 힙의 현재 크기에 맞지 않는 스크립팅 힙 할당이 있을 때마다 가비지 컬렉터가 트리거됩니다. 또한 레퍼런스가 더 이상 없는 모든 할당을 표시하고 수집합니다. 이 프로세스는 프로파일러에서 GC.Collect 샘플로 표시됩니다.

힙에 대한 할당이 늘어날 때마다 Unity는 가비지 컬렉터를 더 자주 실행합니다. 관리되는 힙의 크기가 커지면 Unity가 메모리를 표시하고 수집하는 데 더 오래 걸립니다. 따라서 가비지 컬렉터가 프레임 속도에 영향을 미치지 않도록 만들고 전체 힙 크기를 가능한 작게 유지하려면, 애플리케이션이 실행되는 동안 GC Alloc 값을 0으로 유지해야 합니다.

관리되는 힙에 대한 자세한 내용은 자동 메모리 관리의 이해 문서를 참조하십시오.
Time ms Unity가 특정 함수에 소비한 총 시간(밀리초)입니다. 애플리케이션이 잡 시스템이나 멀티스레드 렌더링을 사용하는 경우 이러한 정보는 잘못되었을 수 있습니다. 이는 현재 선택한 스레드에서 Unity가 소비한 시간만 포함되기 때문입니다. 스레드를 변경하려면 계층 구조 창 상단의 Thread 드롭다운을 선택하십시오.
Self ms Unity가 특정 함수에 소비한 총 시간(밀리초)이며, Unity가 하위 함수를 호출하는 데 소비한 시간은 제외입니다.
Warning 경고 아이콘으로 표시되며, 현재 프레임 동안 애플리케이션이 경고를 트리거한 횟수를 표시합니다. 자세한 내용은 이 문서의 성능 경고 섹션을 참조하십시오.

애플리케이션이 호출하는 위치와 프로파일링된 함수를 사용하는 위치에 대한 자세한 내용을 보려면 모듈 세부 정보 창의 오른쪽 상단에 있는 Details 드롭다운을 선택한 후 Show Related Objects 또는 Show Calls 뷰를 선택하십시오.

Show Related Objects 창
Show Related Objects

The Show Related Objects view displays a list of UnityEngine.Objects that use a Begin() overload and are associated with the Profiler sample. Some samples that Unity reports have these associations built in, such as Camera.Render samples that are linked to the Camera GameObject that does the rendering. Unity reports these objects via their instance ID and resolves them to a name in the Profiler window, if you profile in the Editor. When you profile a built player, or load a capture from disk, these names do not appear and the Profiler displays them as N/A.

When you click on one of these objects, Unity tries to find the object via the Scene hierarchy and ping it. Because the association uses the instance ID, pinging only works when you profile your application in the Editor, and for as long as the object still exists.

For GC.Alloc samples, this view displays a list of N/A items, one for each allocation that happened at this hierarchy level, with the size of the allocation listed in the GC.Alloc column. If you profile your application with the Call Stacks setting enabled, when you select a GC.Alloc sample in this view, the Profiler window displays the call stack for the allocated scripting object you select, even if you did not enable the Deep Profiling setting. For more information, see the Allocation call stacks section of this documentation.

Show Calls 패널
Show Calls 패널

Show Calls 뷰에는 선택한 샘플이 호출되는 위치와 호출하는 다른 함수들을 표시합니다.

Allocation call stacks

기본적으로 GC.Alloc 샘플에 할당된 호출 스택은 멀티 프레임 지연으로 애플리케이션을 중단할 수 있으므로 비활성화되어 있습니다. 하지만 때로는 Unity가 코드를 실행하는 방식을 확인하기 위해 전체 호출 스택을 살펴봐야 할 수 있습니다.

이렇게 하려면 프로파일러 창의 툴바로 이동하여 Call Stacks 버튼을 선택하십시오. 에디터에서 프로파일링을 하거나, 플레이어가 실행 중일 때 이 기능을 사용할 수 있습니다. 이 옵션을 활성화한 후 프로파일링하는 프레임에서 GC.Alloc 샘플에 해당 호출 스택이 포함됩니다.

모든 스크립팅 힙 할당은 계층 구조 뷰와 타임라인 뷰 모두에서 GC.Alloc 샘플로 표시됩니다. 타임라인 뷰에서는 밝은 자홍색으로 표시됩니다. 호출 스택을 확인하려면 CPU 프로파일러 모듈을 선택하고 타임라인 뷰에서 GC.Alloc 샘플을 선택하십시오. 그러면 호출 스택이 강조 표시되어 나타납니다.

GC.Alloc 호출 스택이 있는 타임라인 뷰의 CPU 사용 모듈
GC.Alloc 호출 스택이 있는 타임라인 뷰의 CPU 사용 모듈

또는 계층 구조 또는 원시 계층 구조 뷰에서 호출 스택을 확인할 수 있습니다. Details 뷰를 Show Related Objects 로 설정하십시오. GC.Alloc 샘플에는 이름이 없기 때문에 이 패널에 N/A 오브젝트로 표시됩니다. N/A 오브젝트를 선택하면 프로파일러가 세부 정보 뷰 하단에 호출 스택을 표시합니다.

관리되는 할당에 관한 자세한 내용은 자동 메모리 관리 이해 문서를 참조하십시오.

계층 구조 뷰의 호출 스택
계층 구조 뷰의 호출 스택

Common samples

스크립팅 코드가 생성하는 샘플 외에도 Unity는 수많은 샘플을 통해 애플리케이션의 시간 소비에 관한 인사이트를 제공합니다. 다음 표에는 보다 더 일반적인 샘플들의 동작을 설명합니다.

Main thread base samples

메인 스레드 기본 샘플은 애플리케이션에 소비된 시간과 에디터 및 프로파일러 활동에 소비된 시간을 명확하게 구분합니다. 또한 레코더는 이러한 샘플을 사용하여 메인 스레드의 프레임 타이밍을 확인할 수 있습니다.

샘플 기능
PlayerLoop The root to any samples that originate from your application’s main loop. When you target the Editor instead of Playmode while the Player is running in the Editor in active Play Mode, this sample nests under the EditorLoop.
EditorLoop The root to any samples that originate from the Editor’s main loop. This is only present while you profile a player in the Editor. When you target Playmode with the Profiler, this sample shows how much time of the frame was spent rendering and running the Editor that contains the Player. If you want to see what the Editor does in this time, switch the target to the Editor instead.
Profiler.CollectEditorStats 다른 활성 프로파일러 모듈의 통계 수집과 관련된 샘플의 루트입니다. Profiler.CollectGlobalStats 자식 샘플 아래에 있는 모든 샘플은 플레이어의 과도한 리소스 소모를 유발합니다. 다른 모든 자식 샘플들은 에디터에만 영향을 줍니다. 특정 모듈을 비활성화하려면 해당 차트를 닫거나 Profiler.SetAreaEnabled()를 호출하십시오.

Script update samples

잡 시스템을 사용하지 않는 한 대부분의 스크립팅 코드는 다음 샘플의 아래에 중첩됩니다.

샘플 기능
Update.ScriptRunBehaviourUpdate 이 샘플에는 MonoBehaviour.Update에 대한 호출과 코루틴 처리가 들어 있습니다.
BehaviourUpdate 이 샘플은 모든 Update() 메서드를 처리합니다.
CoroutinesDelayedCalls 첫 번째 yield 이후의 코루틴 샘플이 들어 있습니다.
PreLateUpdate.ScriptRunBehaviourLateUpdate 이 샘플은 모든 LateUpdate() 메서드를 처리합니다.
FixedBehaviourUpdate 이 샘플은 모든 FixedUpdate() 메서드를 처리합니다.

Rendering and VSync samples

이 샘플은 CPU가 GPU에 대한 데이터 처리에 시간을 소비하는 위치, 또는 GPU가 완료되기를 기다리는 위치를 보여줍니다. GPU 프로파일러를 이용할 수 없거나, 리소스 소모가 과도해지는 경우에는 툴바에 이러한 정보가 표시되지 않습니다. 이 샘플은 애플리케이션이 CPU 바운드 또는 GPU 바운드인지 알려줍니다.

샘플 기능
WaitForTargetFPS The time your application spends waiting for the targeted FPS that Application.targetFrameRate specifies.

If this sample is a sub-sample of Gfx.WaitForPresentOnGfxThread, it represents the amount of time that your application spends waiting for the VSync configured in QualitySettings.vSyncCount.

Note: The Editor doesn’t VSync on the GPU and instead uses WaitForTargetFPS to simulate the delay for VSync. Some platforms, in particular Android and iOS, enforce VSync or have a default frame rate cap of 30 or 60.
Gfx.ProcessCommands Contains all processing of the rendering commands on the render thread. Some of that time might be spent waiting for VSync or new commands from the main thread, which you can see from it’s child sample Gfx.WaitForPresentOnGfxThread.
Gfx.WaitForCommands 렌더 스레드가 새 커맨드를 수행할 준비가 되었음을 의미하며 메인 스레드의 병목 현상을 나타낼 수 있습니다.
Gfx.PresentFrame 애플리케이션이 GPU가 프레임을 렌더링하고 표시하기까지 기다린 시간을 표시하며, VSync 대기를 포함할 수 있습니다.

메인 스레드의 WaitForTargetFPS 샘플은 VSync를 기다리는 데 소비한 시간을 표시합니다.
Gfx.WaitForPresentOnGfxThread Indicates that the main thread is ready to start rendering the next frame, but the render thread has not finished waiting on the GPU to present the frame. This might indicate that your application is GPU-bound. To see what the render thread is simultaneously spending time on, check the Timeline view.

If the render thread spends time in Camera.Render, your application is CPU-bound and might be spending too much time sending draw calls or textures to the GPU.

If the render thread spends time in Gfx.PresentFrame, your game is GPU-bound or it might be waiting for VSync on the GPU. A WaitForTargetFPS sub-sample of Gfx.WaitForPresentOnGfxThread indicates the portion of the Present phase that your application spends waiting for VSync. The Present phase is the portion of time between Unity instructing the graphics API to swap the buffers, to the time that this operation is completed
Gfx.WaitForRenderThread 메인 스레드가 렌더 스레드가 현재 커맨드 스트림에 있는 모든 커맨드를 처리할 때까지 기다리고 있음을 의미합니다. 이 샘플은 멀티스레드 렌더링에서만 발생합니다.

Multi threading samples

이 샘플은 CPU 사이클을 소비하지 않지만, 스레딩 및 JobSystem과 관련된 정보를 강조 표시합니다. 이러한 샘플을 사용하는 경우 타임라인 뷰에서 다른 스레드에서 동시에 무슨 일이 일어나고 있는지 확인하십시오.

샘플 기능
Idle Any time that the JobSystem does not utilize a Worker Thread, it emits an Idle sample. Small gaps between Idle samples usually happen when the JobSystem wakes them up, for example to schedule new Jobs. Longer gaps indicate a native Job that has not been instrumented.
Semaphore.WaitForSignal 이 스레드는 다른 스레드에서 무슨 일이 발생하기를 기다립니다. 기다리는 스레드를 찾으려면 타임라인 뷰에서 이 샘플 바로 직전에 종료된 샘플이 있는지 확인하십시오.
WaitForJobGroupID JobHandle의 Sync Fence가 트리거되었습니다. 이로 인해 작업 훔치기가 발생할 수 있습니다. 이는 워커가 해당 작업을 마치고 다른 워커가 작업을 끝마치기를 기다릴 때 발생합니다. 또한 이 샘플에서 실행된 작업 샘플로 표시됩니다. “도난당한” 작업은 대개 기다리고 있던 작업이 아닙니다.

Physics samples

다음 표에는 몇 가지 하이 레벨 물리 프로파일러 샘플이 간략하게 소개되어 있습니다. FixedUpdate()는 이러한 샘플을 모두 호출합니다.

샘플 기능
Physics.Simulate 물리 엔진이 시뮬레이션을 실행하도록 명령하여 현재 물리의 상태를 업데이트합니다.
Physics.Processing 천이 아닌 모든 물리 작업을 처리합니다. 이 샘플을 확장하면 물리 엔진 내부에서 수행되는 작업의 로우 레벨 세부 정보가 표시됩니다.
Physics.ProcessingCloth 모든 천 물리 작업을 처리합니다. 이 샘플을 확장하면 물리 엔진 내부에서 수행되는 작업의 로우 레벨 세부 정보가 표시됩니다.
Physics.FetchResults 물리 엔진의 물리 시뮬레이션 결과를 수집합니다.
Physics.UpdateBodies 모든 물리 바디의 포지션과 회전을 업데이트합니다. 또한 이 샘플에는 이러한 업데이트가 전송될 때 전달되는 메시지도 포함되어 있습니다.
Physics.ProcessReports 물리 FixedUpdate가 끝나면 실행됩니다. 시뮬레이션 결과에 응답하는 다양한 단계를 처리합니다. 이 샘플에서는 접점, 조인트 브레이크, 트리거 업데이트 및 메시지입니다. 여기에는 다음의 네 가지 개별 하위 단계가 있습니다.
Physics.TriggerEnterExits OnTriggerEnterOnTriggerExit 이벤트를 처리합니다.
Physics.TriggerStays OnTriggerStay 이벤트를 처리합니다.
Physics.Contacts OnCollisionEnter, OnCollisionExitOnCollisionStay 이벤트를 처리합니다.
Physics.JointBreaks 끊어진 조인트와 관련된 업데이트와 메시지를 처리합니다.
Physics.UpdateCloth 천과 해당 스킨드 메시와 관련된 업데이트가 들어 있습니다.
Physics.Interpolation 모든 물리 오브젝트의 포지션 및 회전 보간을 관리합니다.

스크립트 라이프사이클과 그 안에 있는 일반 샘플에 대한 자세한 내용은 이벤트 함수의 실행 순서를 참조하십시오.

Performance warnings

CPU 프로파일러는 몇 가지 일반적인 성능 문제를 감지하고 그에 대해 경고할 수 있습니다. 이 경고는 모듈 세부 정보 창에서 계층 구조 뷰의 Warning 열에 나타납니다.

The Profiler can detect some specific calls that you should avoid in performance-critical contexts. It displays the warnings with the reasons the operations are affecting performance as follows:

  • Rigidbody.SetKinematic: 리지드바디용 비 컨벡스 메시 콜라이더를 다시 생성
  • Animation.DestroyAnimationClip: RebuildInternalState 트리거
  • Animation.AddClip: RebuildInternalState 트리거
  • Animation.RemoveClip: RebuildInternalState 트리거
  • Animation.Clone: RebuildInternalState 트리거
  • Animation.Deactivate: RebuildInternalState 트리거

Editor only samples

일부 샘플은 에디터에서 프로파일링할 때에만 존재합니다. 여기에는 null 컴포넌트 사용을 식별하는 데 유용한 GetComponentNullErrorWrapper, 오브젝트 설정을 확인하는 CheckConsistency, 파괴 검사인 CheckAllowDestructionRecursive 등 여러 보안 검사와 프리팹 관련 활동이 포함됩니다. 이러한 샘플들은 플레이어에 존재하지 않습니다.

기본적으로 에디터 전용 샘플은 계층 구조 뷰에서 축소되고 EditorOnly [SampleName]이라는 이름이 지정됩니다. 이러한 샘플은 가비지 컬렉션 할당을 유발할 수 있으며, 축소된 경우 둘러싸는 샘플의 GC.Alloc 값에 기여하지 않습니다.

기본 동작을 변경하려면 모듈 세부 정보 창의 오른쪽 상단에 있는 컨텍스트 메뉴를 클릭한 후 Collapse EditorOnly Samples 설정을 비활성화하십시오. 이렇게 하면 샘플을 확장하고 해당 GC.Alloc 값을 둘러싸는 샘플에 제공할 수 있습니다.

이 옵션은 타임라인 뷰에 영향을 주지 않습니다. 이러한 샘플은 대개 무시하거나, 타겟 디바이스에서 플레이어 빌드를 프로파일링하기 위한 프롬프트로 사용하여 실제 문제를 찾을 수 있습니다.

  • Added Flow Events in 2020.1 NewIn20201
Audio Profiler module
전역 조명 프로파일러 모듈