
このページでは、Unity とネイティブプラットプラットフォームプロファイリングツールに Profile Analyzer を追加する方法を深度紹介します。
Profile Analyzerは、eBook『Ultimate guide to profiling Unity games』(Unity 6版)で紹介されている多数の機能の1つです。このガイドには、Unityでのアプリケーションのプロファイリング、メモリの管理、消費電力の最適化に関する外部および社内のUnityエキスパートの上級者向け知識やアドバイスが始めから終わりまでまとめられています。

どこでパフォーマンスを向上させるか知りたいですか?変更前、変更後のパフォーマンス比較をしたくないですか?Unity のバージョンアップデートがゲームにもたらす影響を把握していますか?Profile Analyzer は、このような質問に対する回答のヘルプとなります。標準の Unity プロファイラーでは単一フレームの分析が可能ですが、Profile Analyzer では、Unity プロファイラーのフレームのセットからキャプチャされたプロファイリングマーカーデータを集計して可視化できます。
標準のUnityプロファイラーでは個々のフレームの詳細な分析が可能ですが、Profile Analyzerでは複数のUnityプロファイラー フレームからキャプチャされたマーカー データを集計して可視化し、より広範な「全体像」を提供します。これにより、複数のフレームまたは異なるプロファイリングセッションのパフォーマンスデータの比較と分析が容易になります。
Profile Analyzer の使用を開始するには、次の手順を実行します。
1.ウィンドウ>パッケージ管理> Package Manager から Profile Analyze パッケージをインストールします。
2.Unityレジストリに移動し、検索フィルターを参照または使用してProfile Analyzerパッケージを探します。
Profile Analyzer は、Unity プロファイラーでキャプチャされた一連のフレームを取得し、それらに対して統計分析を実行します。表示されるデータは、最小値、最大値、平均値、中央値など、各機能に関する有用なパフォーマンス タイミング情報を提供します。
Profile Analyzer はデータの比較を行うのに適しているため、ゲーム開発全体を通して使用して、パフォーマンスと最適化の課題を明確にすることを検討してください。また、これを使用して、ゲーム シナリオでパフォーマンスの差異のA/Bテストを行ったり、プロファイリング データの比較を行ってコードのリファクタリングと最適化、新機能、さらにはUnityのバージョン アップグレードを行うこともできます。Profile Analyzerを使用する際に、プロファイリング セッションを保存してパフォーマンス最適化作業の前後で比較することも役立つヒントの1つです。
Profile Analyzer は、どこに労力を集中させるかを特定するのに役立ちます。2つのUnityパフォーマンス プロファイリングのキャプチャを並べて比較し、変更の影響を調べることができます。
Profile Analyzer は、Unity プロファイラーですでに利用可能な単一フレーム分析を補完するものです。Unity プロファイラーの範囲なフレームからフレームとマーカーのデータを集計して可視化し、多数のフレームにわたるパフォーマンスの経時的なパターンを大まかに確認ヘルプようにします。
Profile Analyzer は、現在のプロファイラーセッションフレームまたは以前に保存されたキャプチャから、複数のフレームに対して CPU パフォーマンス分析を実行します。このツールには統計情報とビジュアライゼーションが付属しており、キャプチャに保存された情報をすばやく解析ヘルプます。また、包括的なフィルタリング機能により、関心のあるセクションをドリル ダウンできます。これを使用して 2 つのデータを比較することも、Rawデータをエクスポートして他のツールで分析することもできます。
Profile Analyzer は、ウィンドウ> Package Manager からインストールできます。

開始にあたっては、まずプロファイラーを使用してデータをキャプチャし、Profile Analyzer にそのデータを入力して分析を実行する必要があります。
集約データを使用すると、一度に1フレームだけを見るのではなく、ゲーム内で何が起きているかをより情報に基づいて把握できます。例えば、300 フレーム(10 秒)のゲームプレイのキャプチャや 20 秒のロードシーケンスでは、次の点について理解する必要があります。
- メインスレッドとレンダースレッドで最も CPU コストが大きいのはどれですか?
- 各マーカーの平均/中央値/合計コストはいくらですか?
これらの基本的な質問に答えることで、最大の問題を特定し、その最適化に優先順位をつけるのに役立ちます。
Profile Analyzer で利用できる統計と詳細により、複数のフレームにわたって実行している場合や、以前のプロファイルキャプチャセッションと比較しても、コードのパフォーマンス特性を深く掘り下げることができます。

ウィンドウ上部の Mode 選択に注目してください。Profile Analyzer には、プロファイリングデータを分析するための複数のビューとアプローチがあります。さまざまなビューを使用して、プロプロファイリングデータのセットを選択、ソート、ビュー、比較します。

Frame Control パネルを使用して、1 つまたはフレームの範囲を選択します。選択すると、[Marker Details] ペインが更新され、選択内容の集計データが便利な統計を含むマーカーのソート可能なリストとともに表示されます。
[Marker Summary] ペインには、選択したマーカーの深度情報が表示されます。リストの各マーカーは、選択したフレーム範囲内のフィルタリングされたすべてのスレッドについて、そのマーカーのすべてのインスタンスを集計したものです。


比較ビューは、2つの異なるデータセットをロードして異なる色で表示し、消去して比較できるため、パフォーマンスのばらつきを分析する場合に特に効果的です。

Profile Analyzer を使用してパフォーマンスの変化を比較する手順は、次のとおりです。アクティブな Unity プロファイラーのキャプチャからのプルデータオプションまたは保存されたセッションからのロードデータオプションを使用できます。ロードする場合、ファイルは Profile Analyzer の .pdata 形式である必要があります。Unity プロファイラーの .データファイルの場合は、まずプロファイラーウィンドウで開き、Profile Analyzer でプルデータを使用します。また、プロファイラーから元の .データファイルを保存することもお勧めします。
1.テストの準備:ゲームの一貫したセクションを選択してプロファイリングを行い、有意義なベンチマーク比較を行ってください。スクリプト化された、または繰り返し可能な手動プレイスルーは、パフォーマンスに影響を与えるランダムな副作用を最小化するのに最適です。
2.キャプチャ「前」データ:
- Profile Analyzer(ウィンドウ> 分析> Profile Analyzer)を開きます。
- Unity プロファイラーで、最適化を行う前に、選択したゲームプレイのプロファイリングセッションを記録します。
- Analyzer の Compare タブで、最初の Pull Data ボタンをクリックします。プロファイラーから現在のキャプチャをロードします。または、セッションを保存することもできます。
3.「処理後」データの最適化とキャプチャ:
- コードやパフォーマンスの改善を適用します。
- Unity プロファイラーの以前のデータを消去し、同じゲームプレイの新しいプロファイリングセッションを記録します。
- Profile Analyzer で 2 つ目の Pull データ ボタンをクリックして、この新しいセッションをロードします。
4.差異の分析:
- Marker Comparison ペインには、キャプチャの「Before」(左)と「After」(右)でマーカーのタイミングがどのように異なるかが表示されます。
- < または > の付いた列は、そのメトリックの値が大きいキャプチャを示します。
- 比較する指標は、マーカー列フィルターを使用して変更できます。
各「Marker Comparison」列の詳細については、比較ビューのエントリーページを参照してください。
フレームの中央値と最長フレームの比較
1 つのプロファイラーのキャプチャ内のフレームの中央値と最長フレームを比較して、後者で起こっていることのうち前者には現れないものを特定したり、完了までに平均よりも長い時間がかかっているものを確認したりすることができます。
Profile Analyzer の Compare ビューを開き、左側と右側の両方で同じデータをロードします。Single ビューでデータをロードしてから Compare に切り替えることもできます。
一番上の Frame Control グラフを右クリックし、Select Median Frame を選択します。一番下のグラフを右クリックし、Select Longest Frame を選択します。
「Profile Analyzer Marker Comparison」パネルが更新され、差分がディスプレイに表示されます。
データ比較のもう 1 つの便利なテクニックは、両方のグラフをフレーム継続時間でソートし(右クリック>「Order By Frame 継続時間」)、各セットで外れ値フレーム(不釣合いに長いまたは短いフレーム)にフォーカスするか除外するかして範囲を選択することです。
これにより、最も典型的なフレームと最も極端なフレームを比較できます。選択した範囲のデータが Marker Comparison テーブルに表示されるため、パフォーマンスのスパイクや不整合の原因を分析しやすくなります。

- 深度レベルを4を選択して、ユーザー スクリプトをドリル インします(UnityエンジンAPIレベルは無視)。このレベルにフィルタリングし、TimelineモードでUnityプロファイラーを確認したら、コールスタック深度を関連付けてここで選択することができます。MonoBehaviourスクリプトは、4番目のレベルの下に青色で表示されます。これは、特定のロジックとゲームプレイのスクリプトが、他の「ノイズ」なしにそれ自体に負荷がかかっているかどうかを簡単に確認する方法です。
- アニメーターやエンジンの物理演算など、Unityエンジンの他の領域でも同じようにデータをフィルターします。
- 「フレームの概要」セクションの右側に、強調表示されているメソッドのパフォーマンス範囲のヒストグラムが表示されます。最大フレーム数(最大タイミングが見つかったフレーム)にカーソルを合わせると、クリック可能なリンクが表示され、Unity プロファイラーでフレーム選択をビューできます。このビューは、高い最大フレーム時間に寄与する可能性のある他の要因を分析する場合に使用します。
- ワイドスクリーンまたは 2 台のモニターがある場合は、Profile Analyzer と Unity プロファイラーを並べて開くと便利です。この設定により、Profile Analyzer でフレームをダブルクリックすると、Unity プロファイラーで同じフレームが自動的に選択され、Timeline ビューまたは Hierarchy ビューでさらに調べることができます。
プロファイラーアナライザーの詳細については、以下のリソースをご覧ください。
- Profile Analyzer のウォークスルーとチュートリアル

Unity Best Practices Hubでは、上級者向けのUnity開発者およびクリエイター向けのベストプラクティスやヒントをさらに多数見つけることができます。Unity のツールセットやシステムを使って効率的に開発するのにヘルプ、業界のエキスパートや Unity のエンジニア、テクニカルアーティストが作成した 30 以上のガイドからお選びください。