# 프로파일러 모듈 생성

> Build custom Profiler modules to display performance data and visualizations for your project's specific needs.

프로파일러 모듈은 프로파일러 창에 시스템의 성능 데이터를 표시합니다.

다음 중 한 가지 방법으로 자체 프로파일러 모듈을 생성할 수 있습니다.

* [프로파일러 모듈 에디터 사용](#Creating-custom-Profiler-module-editor)
* [`ProfilerModule` 스크립트 생성](#Creating-custom-Profiler-module-code)

커스텀 모듈은 코드에 지정한 카운터를 프로파일러 창 차트 뷰(A)에 표시하고 카운터는 모듈 세부 정보 패널(B)에 리스트로 나타납니다.


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/Profiler_Tank_module.png)

## 프로파일러 에디터를 사용하여 프로파일러 모듈 생성

Unity의 빌트인 [프로파일러 모듈 에디터](/engine/6000.0/manual/analysis/profiler/collect-data/visualizing-data/customizing/module-editor.md)를 사용하여 자체 프로파일러 모듈을 생성할 수 있습니다. 프로파일러 모듈에서 데이터를 수집하려면 모듈이 추적할 카운터를 하나 이상 추가해야 합니다. 빌트인 Unity 카운터를 모두 추가하거나 [`ProfilerCounter` API](https://docs.unity3d.com/Packages/com.unity.profiling.core@latest?subfolder=/api/Unity.Profiling.ProfilerCounter-1.html)를 사용하여 모듈에 추가할 [자체 카운터를 생성](/engine/6000.0/manual/analysis/profiler/adding-information-code/add-counters-code.md)할 수 있습니다. 사용 가능한 카운터 목록이 **Available Counters** 창에 표시됩니다.

자체 모듈을 생성하려면 다음 단계를 따르십시오.

1. 프로파일러 창(**Window > Analysis > Profiler**)을 엽니다.
2. Profiler Modules 드롭다운을 선택한 다음 톱니바퀴 아이콘을 선택합니다. 프로파일러 모듈 에디터가 열립니다.
3. 창 좌측 상단에 있는 **Add** 버튼을 선택합니다. 그러면 Unity가 **New Profiler Module**이라는 목록에 새 프로파일러 모듈을 추가합니다. 모듈의 이름을 변경하려면 텍스트 필드를 클릭하고 키보드를 사용하여 이름을 설정합니다.
4. 모듈에 표시할 카운터를 **Available Counters** 패널에서 선택한 후 더블 클릭하여 모듈에 추가합니다. 여러 카운터를 선택하려면 Shift 키를 누른 채로 범위를 선택하거나 Ctrl 키(macOS의 경우 Command 키)를 누른 채로 카운터를 한 번에 하나씩 선택합니다.
5. 카운터의 순서를 변경하려면 카운터를 드래그합니다. 모듈에 최대 10개의 카운터만 추가할 수 있습니다.
6. Profiler Module Editor 창 오른쪽 하단에 있는 Save Changes 버튼을 선택합니다. 그러면 Unity가 창을 닫고 프로파일러 창에 새 모듈을 표시합니다.

**중요:** 프로파일러 창에 로드한 데이터가 없다면 프로파일러 모듈 에디터를 로드할 때도 생성한 카운터가 Available Counters 창에 표시되지 않습니다. 커스텀 카운터를 보려면 프로파일러로 방출된 카운터가 있는 [일부 데이터를 캡처하거나 로드](/engine/6000.0/manual/analysis/profiler/collect-data.md)한 뒤 프로파일러 모듈 에디터를 다시 엽니다.


**사용자 카운터가 나열된 프로파일러 모듈 에디터:**
![](/api/media?file=/engine/6000.0/media/images/profiler-module-editor-user-counters.png)

## 코드에서 프로파일러 모듈 생성

코드를 통해 프로파일러 모듈을 생성하려면 새로운 `ProfilerModule` 스크립트를 생성해야 하고 표시되는 카운터, 이름, 아이콘을 비롯한 모듈의 프로퍼티를 정의해야 합니다.

프로파일러 모듈을 정의하려면 스크립트가 다음을 수행해야 합니다.

1. 프로젝트 또는 패키지에서 [`ProfilerModule`](/engine/6000.0/script-reference/unity-profiling-editor/profiler-module.md)에서 파생된 클래스를 정의합니다. 다음 예시에서 클래스의 이름은 `TankEffectsProfilerModule`입니다.

   ```lang-csharp
   public class TankEffectsProfilerModule : ProfilerModule
   ```

2. 이 클래스에 [`[ProfilerModuleMetadata]`](/engine/6000.0/script-reference/unity-profiling-editor/profiler-module-metadata-attribute.md) 속성을 할당하고 속성의 인수에 모듈의 표시 이름을 지정합니다. 다음 예시에서 표시 이름은 ‘Tank Effects’입니다.

   ```lang-csharp
   [ProfilerModuleMetadata("Tank Effects")] 
   ```

3. 파라미터가 없는 생성자를 구현하고 차트 카운터 설명 목록을 기본 생성자에 전달합니다. 다음 예시에서 파라미터가 없는 생성자는 `TankEffectsProfilerModule()`이고, 차트 카운터 설명자 목록은 `k_Counters`이며, 기본 생성자는 `base`입니다.

   ```lang-csharp
   static readonly ProfilerCounterDescriptor[] k_Counters = new ProfilerCounterDescriptor[]
   {
       new ProfilerCounterDescriptor(GameStatistics.TankTrailParticleCountName, GameStatistics.TanksCategory),
       new ProfilerCounterDescriptor(GameStatistics.ShellExplosionParticleCountName, GameStatistics.TanksCategory),
       new ProfilerCounterDescriptor(GameStatistics.TankExplosionParticleCountName, GameStatistics.TanksCategory),
   };
       
   public TankEffectsProfilerModule() : base(k_Counters) { }
   ```

## 프로파일러 창에 커스텀 프로파일 모듈 표시

자체 프로파일러 모듈을 정의하면 프로파일러 창이 자동으로 이를 감지합니다. 프로파일러 창에서 프로파일러 모듈의 데이터를 보려면 다음 단계를 따르십시오.

1. 프로파일러를 애플리케이션에 연결합니다. 자세한 내용은 [애플리케이션 프로파일링](/engine/6000.0/manual/analysis/profiler/collect-data/profiling-applications.md)을 참조하십시오.
2. 애플리케이션을 실행합니다.

애플리케이션이 플레이 모드일 때도 프로파일러를 실행할 수 있습니다. 하지만 플레이 모드로 애플리케이션을 프로파일링하는 경우 프로파일러는 하드웨어 기기에 빌드할 때 애플리케이션이 실행되는 방식을 나타내지 않는 데이터를 표시합니다.

## 추가 리소스

* [성능 데이터 수집](/engine/6000.0/manual/analysis/profiler/collect-data/profiling-collect-data-introduction.md)
* [프로파일러 모듈 소개](/engine/6000.0/manual/analysis/profiler/collect-data/visualizing-data/modules-introduction.md)
* [프로파일러 모듈 에디터 레퍼런스](/engine/6000.0/manual/analysis/profiler/collect-data/visualizing-data/customizing/module-editor.md)
