Version: 2018.2
プロファイラー概要
CPU Usage プロファイラー

Profiler ウィンドウ

Access the Profiler window in the Unity Editor via the toolbar: Window > Profiler.

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

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

Profiler 制御

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

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

詳細プロファイリング

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

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

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

Color Blind Mode

Color Blind Mode Profiler ウィンドウには Color Blind Mode があります。これは、グラフでよりコントラストの高い色を使用し、赤 - 緑の色覚異常のあるユーザー (緑色盲、赤色盲、青色盲など) の可視性を向上させます。この機能を有効にするには、Profiler ウィンドウの右上端にあるメニューをクリックし、Color Blind Mode をクリックします。

View SyncTime

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

Profiler タイムライン

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

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

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

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

WebGL

ほかのプラットフォームと同様に、WebGL でも Unity プロファイラーを使用できます。しかし、重要な違いの 1 つは、WebGL では Unity プロファイラーを実行プレイヤーに設定できないことです。WebGL は WebSockets を通信に使用しているため、ブラウザー側の受信を許可しないためです。代わりに、ビルド設定で “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 エディターで Profiler ウィンドウを開きます (Window > Analysis > Profiler)。

ファイアウォールを使用している場合、送信設定でポートの 54998 から 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 エディターで Profiler ウィンドウを開きます (Window > Analysis > 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 エディターで Profiler ウィンドウを開きます (Window > Analysis > 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 から 55511 が開放されていることを確認します。これらのポートは Unity によりリモートプロファイリングで使用されます。


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