Version: 2017.1
プロファイラー概要
CPU Usage Profiler (CPU 使用プロファイラー)

Profiler ウィンドウ

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

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

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

Profiler 制御

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

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

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

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

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

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

SyncTime の表示

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

Profiler タイムライン

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

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

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

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

WebGL

他のプラットフォームと同じように、WebGL上で Unity のプロファイラーを使用することができます。1つ重要な違いとして、WebGL として実行しているプレイヤーへアタッチすることはできません。これはブラウザ側が接続を許可しないため WebSocket を使用しているためです。代わりに、Build Settings の「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 デバイスでモバイルデータ通信を無効化します。
  2. Android デバイスを Wi-Fi ネットワークに接続します (プロファイラーはローカル Wi-Fi ネットワークを使用して、デバイスから Unity エディターにプロファイリングデータを送信します)。
  3. ケーブルでデバイスを Mac か PC に接続します。Unity の Build Settings ダイアログボックスで Build SettingsAutoconnect Profiler チェックボックスをチェックし、 Build & Run を選択します。
  4. アプリケーションがデバイスで起動したら、Unity エディター (Window > Profiler) で Profiler ウィンドウを開きます。
  5. Unity エディターがデバイスに自動接続しない場合は、Profiler ウィンドウの Active Profiler ドロップダウンメニューから適切なデバイスを選択します。

注意: Android デバイスおよび( Unity エディターを実行している)ホストコンピューターは両方とも同じ サブネット にないとデバイス検知が正しく動作しません。

ADB プロファイリングを行うには、次の手順に従います:

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

注意: ドロップダウンメニューのエントリーは選択されたターゲットが Android の場合のみ表示されます。

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


プロファイラー概要
CPU Usage Profiler (CPU 使用プロファイラー)