プロファイラー概要
CPU Usage プロファイラー

Profiler ウィンドウ

Profiler ウィンドウにアクセスするには、ツールバーから Window > Profiler の順に選択します。

プロファイラーの機能に関する概要は Profiler の概要 を参照してください。

Profile ウィンドウ
Profile ウィンドウ

Profiler 制御

Profiler 制御はウィンドウの一番上にあります。これらを使用してプロファイリングをオンまたはオフにし、プロファイルされたフレームをナビゲートします。移動の制御は、ツールバーの右端にあります。ゲームが実行中で、プロファイラーがデータを収集しているときに、これらの移動制御のいずれかをクリックすると、ゲームが一時停止するので注意してください。制御は、最初にレコードしたフレーム、1 フレーム戻る、1 フレーム進む、最後のフレームの順に移動します。

プロファイラーはレコードしたすべてのフレームを保存しません。そのため、first フレームの概念は実際にはまだメモリに保持されている最も古いフレームです。「current」の移動ボタンは、プロファイル統計ウィンドウにリアルタイムで収集されたデータを表示します。アクティブプロファイラーポップアップメニューでは、エディターや別のプレーヤー (たとえば、ゲームが接続した iOS デバイスで実行されているなど) でプロファイリングを実行するかどうかを選択できます。 Save ボタンはレコードしたフレームをファイルに書き込みます。これに対応して、Load ボタンは以前に保存されたデータを読み込みます。また、プレイヤーによって書き出されたバイナリプロファイルデータを読み込むこともできます (ログを生成するときは Profiler.enableBinaryLog を設定してバイナリ形式を有効にします)。Shift ボタンを押しながら Load をクリックすると、ファイル内容がメモリ内の現在のプロファイルフレームに追加されます。

ディーププロファイリング

Deep Profile を有効にすると すべての スクリプトコードがプロファイリングされます。すなわちすべての関数コールが記録されます。これはゲームコードのどこで時間を要したかを正確に知りたいときに便利です。

ディーププロファイリングは 非常に大きなオーバーヘッド を要するとともにメモリも大量に使用するため、プロファイリングしている間はゲームが著しく遅くなります。もし複雑なスクリプトコードを使用している場合、ディーププロファイリングは不可能である場合があります。ディーププロファイリングはシンプルなスクリプトで構成されている小規模なゲームでは十分に速く動作します。もしゲーム全体で使用して、ゲームがほとんど実行できないほどフレームレートが落ちる場合、このツールは避けるべきであり、代わりに以下に説明するツールを使用すべきです。ディーププロファイリングはゲームを設計しながらキーとなる機能をどう実装するか決めるときに役立ちます。大規模なゲームではディーププロファイリングにより Unity がメモリ不足に陥るため、不可能かもしれません。

スクリプトコードのブロックを手動でプロファイリングすると、ディーププロファイリングを使用する場合よりもオーバーヘッドが少なくなります。 Profiler.BeginSampleProfiler.EndSample スクリプトを使用して、コードセクションのプロファイリングを有効または無効にします。

Color Blind Mode

Location of color blind mode The Profiler window features a Color Blind Mode, which uses higher contrast colors in the graphs to enhance visibility for users with red-green color blindness (such as deuteranopia, protanopia, or tritanopia). To enable it, click the context menu in the upper-right corner of the Profiler window, and click Color Blind Mode.

View SyncTime

固定フレームレートや垂直ブランクと同期するとき、Unity は待ち時間を “Wait For Target FPS” に記録します。デフォルトではこの時間はプロファイラーに表示されていません。待ち時間を表示するには “View SyncTime” をオンにします。これはフレームレートが落ち始めるまでの“余裕”がどれぐらいあるかを意味します。

Profiler タイムライン

プロファイラーウィンドウの上側にある経時的なパフォーマンスを表示します。ゲームを実行したとき、データは毎フレーム記録されて、直近の数百フレームの履歴が表示されます。特定フレームをクリックすることでウィンドウの下部に詳細が表示されます。どのタイムラインのエリアを現在選択しているかによって異なる詳細が表示されます。

タイムラインの垂直方向のスケールは自動的に管理されていてウィンドウの垂直方向のスペースを埋めようとします。例えば CPU 使用率の詳細を確認したいとき、メモリやレンダリングのエリアを閉じます。さらにタイムラインと統計情報の間の枠線を選択してドラッグすることでタイムラインで使用される画面領域を増やすことができます。

タイムラインはいくつかのエリアから構成されます。CPU 使用率、レンダリングやメモリです。これらのエリアを閉じるにはパネルの close ボタンをクリックし、もう一回追加するには Profile Controls バーの、Add Area ドロップダウンを使用します。

色のついた正方形になっているラベルエリアは関連するタイムラインを表示したり非表示にしたりコントロールすることが可能です。ウィンドウをクリック時に表示されるカラーキーのサンプルを削除すると、キーの位置が裏暗くなっていきグラフから削除されます。これは、例えば、CPU グラフ内のスパイクの原因を特定するために有用です。

WebGL

ほかのプラットフォームと同様に、WebGL でも Unity プロファイラーを使用できます。しかし、重要な違いの 1 つは、ブラウザが WebSockets の受信を許可しないため、WebGL の実行プレーヤーにアタッチできないことです。代わりに、ビルド設定で「Autoconnect profiler」チェックボックスを使用する必要があります。 WebGL では、ドローコールは現在プロファイリングできません。

リモートプロファイリング

他のデバイスや別のコンピューターで動作している Unity プレーヤーで実行しているゲームのプロファイルを作成するには、Unity エディターを他のデバイスまたはコンピューターに接続します。 Active Profiler ドロップダウンリストには、ローカルネットワーク上で実行されているすべての Unity プレイヤーが表示されます。これらのプレーヤーは、プレイヤーの種類と、プレーヤーの iPhonePlayer (Toms iPhone など) を実行しているホスト名によって識別されます。

Unity プレーヤーに接続できるようにするには、その Unity プレーヤーを Development build (メニューから File > Build Settings… ) で起動する必要があります。

ダイアログボックスの Development build オプションをチェックします。 ここで、Autoconnect Profiler をチェックして、起動時にエディターとプレイヤーの自動接続を行うこともできます。

iOS

以下の手順で iOS デバイスの遠隔プロファイリングを可能にします。

  1. iOS デバイスを Wi-Fi ネットワークに接続します (プロファイラーはローカル Wi-Fi ネットワークを使用して、デバイスから Unity エディターにプロファイリングデータを送信します)。
  2. Unity エディターの Build Settings ダイアログボックス ( File > Build Settings…) で、 Autoconnect Profiler チェックボックスにチェックします。
  3. ケーブルでデバイスを Mac に接続します。Unity エディターの Build Settings ダイアログボックス ( File>Build Settings…) で、 Autoconnect Profiler チェックボックスをチェックし、 Build & Run を選択します。
  4. アプリケーションがデバイスで起動したら、Unity エディター (Window > Profiler) で Profiler ウィンドウを開きます。

ファイアウォールを使用している場合、設定でポート番号 54998 to 55511 が開放されていることを確認します - これらのポートは Unity によりリモートプロファイリングで使用されます。

ノート Unity エディターがデバイスに自動接続しないことがあります。このような場合は、Profiler ウィンドウの Active Profiler ドロップダウンメニューから適切なデバイスを選択して Profiler 接続を開始できます。

Android

Android デバイスで遠隔プロファイリングを有効にするには、Wi-Fi か ADB (Android Debug Bridge) の 2 つの方法があります。

WiFi プロファイリングは、以下の手順で行います。

  1. Android デバイスの Mobile Data を無効にします。
  2. Android デバイスを Wi-Fi ネットワークに接続します (プロファイラーはローカル Wi-Fi ネットワークを使用して、デバイスから Unity エディターにプロファイリングデータを送信します)。
  3. ケーブルでデバイスを Mac か Windows に接続します。Unity の Build Settings ダイアログボックスで Build SettingsAutoconnect Profiler チェックボックスをチェックし、 Build & Run を選択します。
  4. アプリケーションがデバイスで起動したら、Unity エディター (Window > Profiler) で Profiler ウィンドウを開きます。
  5. Unity エディターがデバイスに自動接続しない場合は、Profiler ウィンドウの Active Profiler ドロップダウンメニューから適切なデバイスを選択します。

ノート デバイスの検出が正常に機能するためには、Android デバイスとホストコンピューター (Unity エディターを実行中) は、両方とも同じ サブネット 上になければなりません。

ADB プロファイリングは、以下の手順で行います。

  • ケーブルを使ってデバイスを Mac か Windows に接続し、ADB がデバイスを認識するか (つまり、 adb devices リストに表示されるかどうか) を確認します。
  • Unity エディターの Build Settings ダイアログボックス ( File>Build Settings…) で、 Development Build チェックボックスをチェックし、 Build & Run を選択します。
  • アプリケーションがデバイスで起動したら、Unity エディター (Window > Profiler) で Profiler ウィンドウを開きます。
  • Profiler ウインドウのドロップダウンメニューから AndroidProfiler(ADB@127.0.0.1:34999) を選択します。 ノート Build & Run をクリックすると、Unity エディターはアプリケーションのために自動的に adb トンネルを作成します。 もし、別のアプリケーションや adb サーバーを手動で再起動した場合は、ターミナル/コマンドウィンドウを開き、次のコマンドを入力します。
adb forward tcp:34999 localabstract:Unity-{insert bundle identifier here}

ノート ドロップダウンメニューのエントリーは、選択したターゲットが Android であるときのみ表示されます。

ファイアウォールを使用している場合、設定でポート番号 54998 to 55511 が開放されていることを確認します - これらのポートは Unity によりリモートプロファイリングで使用されます。


プロファイラー概要
CPU Usage プロファイラー