プロファイラーウィンドウ

確認済のバージョン: 5.4

-

難易度: 中級

はじめに

    • プロファイリングツール * * は、ゲームのパフォーマンスに関する情報の詳細な確認を可能にするものです。例えばフレームレートの低下やメモリの過剰使用などの問題がゲームに起こっている場合に、その原因を特定し、修正するために役立ちます。

プロファイラーウィンドウ は 、Unity に搭載された強力なプロファイリングツールです。本章では、その目的と使用方法を解説します。まず本章でプロファイラーウィンドウのレイアウトと機能について理解してから、実際にそれを使用して各種パフォーマンス問題を診断する方法を学んでいきましょう。

プロファイラーウィンドウでは、ゲームの各部分の実行状況を詳細に確認することができます。

各種データが表示されたプロファイラーウィンドウ

プロファイラーウィンドウを使用すると、ゲームのパフォーマンスを様々な異なる面から確認することができます。例えば、メモリの使用状況、各タスクの CPU 時間の使用量、物理演算の実行される頻度などです。またさらに、そういったデータを基にパフォーマンス問題の原因を特定し、その修正方法の有効性を確認することができます。

ゲームにパフォーマンスの問題が起こっている場合、その修正を行う前に、まず原因の究明を行うことが不可欠です。どんな解決策が必要かは問題の種類によって異なります。例えば、物理演算が複雑過ぎるためにプロジェクトの動きが重くなっている場合、グラフィックのレンダリング性能を向上しても解決にはなりません。またこれと同時に、解決策の有効性を確認することも必要不可欠です。プロファイリングデータを有効活用すれば、不確かな修正策をやみくもに試みる代わりに、適切な形で最適化を行うことが可能になります。

プロファイラーウィンドウのレイアウト

ゲームに関するデータの収集を始めるに当たって、まずはプロファイラーウィンドウを開き、そのレイアウトを理解しましょう。

  • 上部のメニューバーから Window > Profiler と選択し、プロファイラーウィンドウを開いてください。

データの表示されていないプロファイラーウィンドウ

プロファイラーウィンドウに情報が表示されるのは、プロファイリングデータが記録された時です。初めてプロファイラーウィンドウを開いた場合は、一部の項目は空白になっています。実行中のゲームからプロファイリングデータの記録が行われると、情報が表示されます。

プロファイラー

プロファイラーウィンドウの左側に、各種 プロファイラー(profiler) が表示されます。それぞれプロファイラーがゲームに関する特定の情報を表示します。プロファイラーは、CPU 使用状況、GPU 使用状況、レンダリング、メモリ使用状況、オーディオ、物理、ネットワークの項目に分かれています。

プロファイラー

プロファイリングデータが記録されると、プロファイラーウィンドウの上半分に、各種プロファイラーのデータが時間の経過と共に表示されます。パフォーマンスは経時的に変化しますので、複数のフレームからパフォーマンスの確認を行うと有益です。継続して常に起こっている問題もあれば、特定の1フレームでのみ発生する問題、あるいは時間の経過と共に緩和したり悪化したりする問題もあります。

プロファイラー

プロファイラーウィンドウの下半分には、現在選択中のプロファイラーの、現在選択中のフレームやデータに関する詳細情報が表示されます。

詳細表示

ここに表示されるデータの種類は、選択中のプロファイラーによって異なります。例えばメモリ(Memory)プロファイラーが選択されている場合、最も多くメモリを使用しているアセットや、合計メモリ使用量などの情報が表示されます。レンダリング(Rendering)プロファイラーが選択されている場合は、レンダー中のオブジェクトの数や、実行中のレンダリング処理の数などの情報が表示されます。

プロファイラーでは様々な詳細情報が確認できますが、プロファイリングを行うたびに全ての情報を使用する必要はありません。実際にゲームのプロファイリングを行うに当たっては通常、1つか2つのプロファイラーから始めます。例えば、ゲームの動きが遅くなっている場合は、CPU 使用状況のプロファイラーから確認するのが一般的です。

CPU Usage(CPU 使用状況)プロファイラー

CPU Usage プロファイラーでは、ゲームのどの部分が CPU 時間を最も多く使用しているか、概観で確認することが可能です。この情報を足掛かりに、他にどのプロファイラーを確認するべきか判断していくこともできます。例えば、物理機能の実行に時間が掛かっていることが判明した場合、Physics(物理)プロファイラーを使用して、ゲームの物理パフォーマンスに関しての詳細な情報収集が必要となるでしょう。

必要のないプロファイラーは隠すことで、表示をすっきりと見やすくできます。各プロファイラーの右上にある X アイコンをクリックすると、そのプロファイラーが非表示になります。

プロファイラーを削除する

ウィンドウの左上にある Add Profiler をクリックし、追加したいプロファイラーを選ぶと、そのプロファイラーが新しく追加されます。

プロファイラーを追加する

プロファイラーの追加や削除はいつでも行えます。単純に表示・非表示が切り替わるだけなので、データ自体が失われることはありません。

制御

プロファイラーウィンドウの制御は、画面上部にあるバーから行います。

制御

この制御バーから、プロファイリングの開始・停止や、各種プロファイリング機能のオン・オフの切り替え、またプロファイラーによって収集されたデータ内の移動を行えます。

代表的な使用方法のひとつは、パフォーマンスの問題をキャプチャーできるタイミングでゲームのプロファイリングを開始し、必要なデータが取得されたらプロファイリングを停止する方法です。これを行った上で次にタイムライン制御を使用し、問題の起こっているフレームに到達するまでデータを確認していきます。このフレームのデータは、画面の下半分に表示されます。

プロファイラーウィンドウを使用してゲームのプロファイリングデータを記録する

これでプロファイラーウィンドウのレイアウトがおおまかに理解できました。ここからは、実際にゲームからデータを記録して、そのデータを基にゲームのパフォーマンス状況を理解する方法を学んでいきましょう。

プロファイラーウィンドウを使用したデータの記録には、若干のパフォーマンスコストが掛かります。これはプロファイリングツール一般に言えることで、詳細なプロファイリングデータの記録と表示を一切のオーバーヘッド無しで行うことは不可能です。通常はこれがゲームの実行自体に大きく関わることはありませんが、記録処理の実行中にはパフォーマンスにごくわずかな影響が出ることがあります。

ゲームのプロファイリング方法は二つあります。ゲームを Unity Editor 内で実行中に行うか、あるいは Unity Editor の外で開発ビルドとして実行中に行うかです。Unity ゲームの開発ビルドは、次の二つの意味において、通常のビルドとは異なります。開発ビルドはゲームの実行中にプロファイラーウィンドウに接続することができ、デバッグを可能にするファイルを含んでいます。

通常は、プロファイリングは Unity Editor 内から行うのではなく開発ビルドで行うことが推奨されます。理由は二つあります。一つ目の理由は、パフォーマンスとメモリ使用に関するデータは、スタンドアロンの開発ビルドから収集した方が、Unity Editor 内でプロファイリングを行った場合に比べ遥かに正確であるためです。プロファイラーウィンドウは Unity Editor 自体からデータを記録するため、結果にずれが生じます。二つ目の理由は、ゲームは可能な限りターゲットのハードウェアでテストを行うことが望ましいからです。例えば Android のゲームなら Android のデバイスでテストを行う必要があります。パフォーマンス問題の種類によっては、特定のハードウェアや OS でゲームを実行した場合にのみ発生するものもあるため、Unity Editor でテストを行うだけでは問題を見逃してしまう可能性があります。

ただし、Unity Editor でのテストが役立つ場合もあります。場合によっては、精密な分析よりも全体的なパフォーマンスを素早く把握したいこともあるでしょう。例えば、パフォーマンス問題の原因となっている GameObject を特定するため、多数の GameObject の有効・無効の切り替えをランタイムで行いたい場合などです。この場合、複数のビルドを作成するよりも Unity Editor で変更を行ってテストする方が遥かに効率的です。どこに問題があるのか大まかに把握できたら開発ビルドのプロファイリングを行い、修正のために必要となる正確な情報を収集します。

Unity Editor 内でのプロファイリング

Unity Editor でゲームを実行中にプロファイリングデータを記録するには、以下の手順を実行してください。

  • Unity でプロファイリングしたいプロジェクトを開きます。

  • トップメニューバーから Window > Profiler と選択してプロファイラーウィンドウを開きます。

  • プロファイラーウィンドウ上部のツールのセクションで Record が選択されている状態にしてください。

  • Play Mode を入力します。

ゲームを操作するに応じてリアルタイムでプロファイリングデータが収集されます。

ゲームの開発ビルドをプロファイリングする

ターゲットのハードウェア上のゲームからプロファイリングデータを記録するには、ゲームの開発ビルドを作成し、そのビルドにプロファイラーウィンドウを接続する必要があります。これを行う方法は、ターゲットのプラットフォームによって異なります。

Windows、OSX、Linux および WebGL

Windows、OSX、Linux、WebGL でゲームの開発ビルドの "Build and Run"(ビルドと実行)を行うには、次の手順を行ってください。

  • Unity でプロファイリングしたいプロジェクトを開きます。

  • トップメニューバーから Window > Profiler と選択してプロファイラーウィンドウを開きます。

  • プロファイラーウィンドウの上部のツールで Record が選択されている状態にしてください。

  • 上部のメニューから Build Settings (ビルド設定)ウィンドウを開いてください(File > Build Settings)。

  • Development Build のチェックボックスがオンになっていない場合は、オンにしてください。

  • Autoconnect Profiler のチェックボックスがオンになっていない場合は、オンにしてください。

  • Build and Run をクリックしてください。

参考画像

ターゲットデバイス上でゲームが実行されます。ゲームが実行され操作されるに応じて Unity Editor 内のプロファイラーウィンドウにリアルタイムでプロファイリングデータが表示されます。

iOS または Android の開発ビルドをプロファイリングする

iOS や Android ゲームの開発ビルドへのプロファイラーウィンドウの接続は、少し複雑になります。なぜかと言うと、該当デバイスにゲームをビルドした上でそのデバイスを Unity Editor に接続する必要があるからです。

プロファイラーウィンドウを iOS ゲームや Android ゲームの開発ビルドに接続する手順は、Unity マニュアルのこちらのページ でご確認いただけます。

プロファイラーウィンドウを使用して問題を診断する

以上で、プロファイラーウィンドウの仕組みをの説明は終わりです。それでは早速、ゲームの問題を特定して修正を行うために、プロファイラーウィンドウを使用してみましょう。

次章では、ゲームの動きが遅くなったり、カクつきやフリーズが起こっている場合に、プロファイラーウィンドウを使って問題の原因を特定する方法を解説します。

参考資料

Unity Learn: Introduction to the profiler(動画)

Unity Learn: Profiler overview for beginners(動画)

Unity マニュアル プロファイラーウィンドウ

Unity マニュアル ― CPU Uasge (CPU 使用状況)プロファイラー

Unity マニュアル ― GPU Usage (GPU 使用状況)プロファイラー

Unity マニュアル ― Rendering (レンダリング)プロファイラー)

Unity マニュアル ― Memory (メモリ)プロファイラー

Unity マニュアル ― Audio (オーディオ)プロファイラー

Unity マニュアル ― Physics (物理)プロファイラー

Unity スクリプトリファレンス ― Profiler