# プロファイラーモジュールの作成

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

プロファイラーモジュールは、システムのパフォーマンスデータを Profiler ウィンドウに表示します。

独自のプロファイラーモジュールは、以下のいずれかの方法で作成できます。

* [プロファイラーモジュールエディターを使用](#Creating-custom-Profiler-module-editor) する。
* [`ProfilerModule` スクリプトを作成](#Creating-custom-Profiler-module-code) する。

カスタムモジュールは、コードで指定したカウンターを Profiler ウィンドウのチャートビュー (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) を使用して、独自のプロファイラーモジュールを作成することができます。プロファイラーモジュールでデータを収集するには、モジュールが追跡するためのカウンターを少なくとも 1 つ加える必要があります。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. Profiler ウィンドウを開きます (**Window > Analysis > Profiler**)。
2. Profiler Modules ドロップダウンを選択し、歯車アイコンを選択します。プロファイラーモジュールエディターが開きます。
3. ウィンドウの左下にある **Add** ボタンを選択します。Unity は、**New Profiler Module** という名前の新しいプロファイラーモジュールをリストに追加します。モジュールの名前を変更するには、テキストフィールドをクリックして、キーボードで名前を設定します。
4. モジュールに表示するカウンターを **Available Counters** パネルから選択し、ダブルクリックしてモジュールに追加します。複数のカウンターを選択するには、Shift キーを押しながらクリックして範囲を選択するか、Ctrl (macOS では Command) キーを押しながら 1 つずつカウンターを選択します。
5. カウンターを並べ替えるには、カウンターをドラッグします。1 つのモジュールに追加できるカウンターの数は最大 10 個です。
6. Profiler Module Editor ウィンドウの右下にある Save Changes ボタンを選択します。Unity がウィンドウを閉じ、Profiler ウィンドウに新しいモジュールが表示されます。

\*\*重要：\*\*Profiler ウィンドウにデータをロードしないと、作成したカウンターは、プロファイラーモジュールエディターをロードしたときに 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) { }
   ```

## Profiler ウィンドウにカスタムプロファイルモジュールを表示

独自のプロファイラーモジュールを定義すると、Profiler ウィンドウはそれを自動的に検出します。プロファイラーモジュールのデータを Profiler ウィンドウで表示するには、以下を行います。

1. Profiler をアプリケーションに接続します。詳細については、[アプリケーションのプロファイル](/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)
* [Profiler Modules エディターのリファレンス](/engine/6000.0/manual/analysis/profiler/collect-data/visualizing-data/customizing/module-editor.md)
