Profiler ウィンドウにアクセスするには、ツールバーから Window > Profiler の順に選択します。
プロファイラーの機能に関する概要は Profiler の概要 を参照してください。
Profiler コントロールはウィンドウの一番上にあります。これらを使用してプロファイリングをオンまたはオフにし、プロファイルされたフレームをナビゲートします。移動のコントロールは、ツールバーの右端にあります。ゲームが実行中で、プロファイラーがデータを収集しているときに、これらの移動コントロールのいずれかをクリックすると、ゲームが一時停止するので注意してください。コントロールは、最初にレコードしたフレーム、1 フレーム戻る、1 フレーム進む、最後のフレームの順に移動します。
プロファイラーはレコードしたすべてのフレームを保存しません。そのため、first フレームの概念は実際にはまだメモリに保持されている最も古いフレームです。「current」の移動ボタンは、プロファイル統計ウィンドウにリアルタイムで収集されたデータを表示します。アクティブプロファイラーポップアップメニューでは、エディターや別のプレイヤー (たとえば、ゲームが接続した iOS デバイスで実行されているなど) でプロファイリングを実行するかどうかを選択できます。 Save ボタンはレコードしたフレームをファイルに書き込みます。これに対応して、Load ボタンは以前に保存されたデータを読み込みます。また、プレイヤーによって書き出されたバイナリプロファイルデータを読み込むこともできます (ログを生成するときは Profiler.enableBinaryLog を設定してバイナリ形式を有効にします)。Shiftボタンを押しながら Load をクリックすると、ファイル内容がメモリ内の現在のプロファイルフレームに追加されます。
Deep Profile (詳細プロファイル) を有効にすると すべての スクリプトコードがプロファイリングされます。すなわちすべての関数コールが記録されます。これはゲームコードのどこで時間を要したかを正確に知りたいときに便利です。
Deep Profile を使うと 非常に大きなオーバーヘッド を要するとともにメモリも大量に使用するため、プロファイリングしている間はゲームが著しく遅くなります。もし複雑なスクリプトコードを使用している場合、詳細プロファイリングは不可能である場合があります。詳細プロファイリングはシンプルなスクリプトで構成されている小規模なゲームでは十分に速く動作します。もしゲーム全体で使用して、ゲームがほとんど実行できないほどフレームレートが落ちる場合、このツールは避けるべきであり、代わりに以下に説明するツールを使用すべきです。詳細プロファイリングはゲームを設計しながらキーとなる機能をどう実装するか決めるときに役立ちます。大規模なゲームでは詳細プロファイリングにより Unity がメモリ不足に陥るため、不可能かもしれません。
スクリプトコードのブロックを手動でプロファイリングすると、ディーププロファイリングを使用する場合よりもオーバーヘッドが少なくなります。 Profiler.BeginSample やProfiler.EndSample スクリプトを使用して、コードセクションのプロファイリングを有効または無効にします。
固定フレームレートで実行する場合や垂直ブランク (V Blank) と同期し実行する場合に、Unity は待ち時間を “Wait For Target FPS” に記録します。デフォルトではこの時間はプロファイラーに表示されません。待ち時間を表示するには “View SyncTime” をオンにします。これはフレームレートが落ち始めるまでの余裕がどれぐらいあるかを意味します。
プロファイラーウィンドウの上側にある経時的なパフォーマンスを表示します。ゲームを実行したとき、データは毎フレーム記録されて、直近の数百フレームの履歴が表示されます。特定フレームをクリックすることでウィンドウの下部に詳細が表示されます。どのタイムラインのエリアを現在選択しているかによって異なる詳細が表示されます。
タイムラインの垂直方向のスケールは自動的に管理されていてウィンドウの垂直方向のスペースを埋めようとします。例えば CPU 使用率の詳細を確認したいとき、メモリやレンダリングのエリアを閉じます。さらにタイムラインと統計情報の間の枠線を選択してドラッグすることでタイムラインで使用される画面領域を増やすことができます。
タイムラインはいくつかのエリアから構成されます。CPU 使用率、レンダリングやメモリです。これらのエリアを閉じるにはパネルの close ボタンをクリックし、もう一回追加するには Profile Controls バーの、Add Area ドロップダウンを使用します。
色のついた正方形になっているラベルエリアは関連するタイムラインを表示したり非表示にしたりコントロールすることが可能です。ウィンドウをクリック時に表示されるカラーキーのサンプルを削除すると、キーの位置が薄暗くなっていきグラフから削除されます。これは、例えば、CPU グラフ内のスパイクの原因を特定するために有用です。
ほかのプラットフォームと同様に、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 デバイスの遠隔プロファイリングを可能にします。
ファイアウォールを使用している場合、送信設定でポートの 54998 から 55511 が開放されていることを確認します。これらのポートは Unity によりリモートプロファイリングで使用されます。
ノート Unity エディターがデバイスに自動接続しないことがあります。このような場合は、Profiler ウィンドウの Active Profiler ドロップダウンメニューから適切なデバイスを選択して Profiler 接続を開始できます。
Android デバイスで遠隔プロファイリングを有効にするには、Wi-Fi か ADB (Android Debug Bridge) の 2 つの方法があります。
WiFi プロファイリングは、以下の手順で行います。
ノート デバイスの検出が正常に機能するためには、Android デバイスとホストコンピューター (Unity エディターを実行中) は、両方とも同じ サブネット 上になければなりません。
ADB プロファイリングは、以下の手順で行います。
adb forward tcp:34999 localabstract:Unity-{insert bundle identifier here}
ノート ドロップダウンメニューのエントリーは、選択したターゲットが Android であるときのみ表示されます。
ファイアウォールを使用している場合、送信設定でポートの 54998 から 55511 が開放されていることを確認します。これらのポートは Unity によりリモートプロファイリングで使用されます。