ターゲットのリリースプラットフォームでアプリケーションのプロファイリングを行うには、ターゲットデバイスをネットワークに接続するか、ケーブルで直接コンピューターに接続します。また、Unity エディターでアプリケーションを直接プロファイリングして、 アプリケーション開発中のおおよそのプロファイリング結果を確認することもできます。
You can only profile your application as a Development Build. To set this up, go to Build Settings (File > Build Settings) and select your application’s target platform. Enable the Development Build setting.
You can also check the Autoconnect Profiler checkbox to make the Unity Editor bake its IP address into the built Player during the build process. When you start the player, it attempts to connect to the Profiler to the Editor located at the baked IP address.
When you build and run your application, the player appears in the Attach to Player drop-down of the Profiler window. The Attach to Player drop-down shows all Unity Players running on your local network. You can identify these Players by player type and the hostname that is running the player (for example, iPhonePlayer (Toms iPhone)).
プレイヤーを選択し、 Record をクリックして、アプリケーションのプロファイリング情報の収集を開始します。Build Settings で Autoconnect to Profiler を有効にすると、アプリケーションの起動時に Unity が自動的にデータの収集を開始します。
アプリケーションの実行中に継続的にデータを収集するには、Player Settings の Run In Background 設定を有効にします (Edit > Project Settings > Player > Resolution and Presentation)。この設定を有効にすると、バックグラウンドでアプリケーションを実行し続ける場合でもプロファイラーはデータを収集します。これを無効にすると、プロファイラーは、 アプリケーションがアクティブなウィンドウで実行されている場合にのみデータを収集します。
Profiler ウィンドウを使用してエディターでアプリケーションの実行とプロファイリングを行う場合、結果は、ターゲットプラットフォームで実行したときのアプリケーションの動作の近似にすぎません。再生モードはエディターと同じプロセスで実行されるため、アプリケーションの CPU、GPU、メモリ使用を Unity から完全に分離することはできません。これにより、結果のプロファイリングデータがさらに歪められます。
より適切なプロファイリング結果を得るには、常にターゲットデバイスでアプリケーションをプロファイルする必要があります。すでにデバイス上で特定された問題を素早く繰り返す目的にのみ、エディターでのプロファイリングを行ってください。
You can use the Unity Profiler in WebGL, but you cannot attach to running players via WebGL. This is because WebGL uses WebSockets for communication, which does not allow incoming connections on the browser side. To attach to a running player, you need to enable the Autoconnect Profiler checkbox in Build Settings (menu: File > Build Settings). Unity cannot profile draw calls for WebGL.
iOS デバイスと Android デバイスはどちらも、ネットワークを通じてリモートプロファイリングをサポートしています。ファイアウォールを使用している場合は、ファイアウォールの設定でポート番号 54998 から 55511 が開放されていることを確認します。これらは、Unity がリモートプロファイリングに使用するポートです。
ノート: リモートプロファイリングを設定すると、Unity エディターがデバイスに自動接続しない場合があります。これが発生した場合は、手動でプロファイラーの接続を開始できます。これを行うには、Profiler ウィンドウの Playmode ドロップダウンで適切なデバイスを選択します。
ターゲットデバイスを直接コンピューターに接続して、ネットワークや接続の問題を回避することもできます。
iOS デバイスでリモートプロファイリングを有効にするには、以下の手順を実行します。
Android デバイスは、Wi-Fi と Android Debug Bridge (adb) の 2 種類のリモートプロファイリング方法をサポートしています。
Wi-Fi プロファイリングは、以下の手順で行います。
ノート: デバイスの検出が正常に機能するためには、Android デバイスとホストコンピューター (Unity エディターを実行中) は、両方とも同じサブネット上になければなりません。
Android Debug Bridge (adb) プロファイリングは、以下の手順で行います。
Build & Run を選択すると、Unity エディターはアプリケーションのために自動的に adb トンネルを作成します。別のアプリケーションをプロファイルしたい場合や adb サーバーを再起動した場合は、このトンネルを手動で設定できます。これを行うためには、ターミナル/コマンドウィンドウを開き、次のコマンドを入力します。
adb forward tcp:34999 localabstract:Unity-{insert bundle identifier here}
Android ビルドでディーププロファイリングを使用するには、Android Player Settings (Edit > Project Settings > Player > Android > Other Settings) で Mono Scripting Backend 設定を有効にし、以下を入力して adb コマンドでゲームを開始します。
~$ adb shell am start -n {insert bundle identifier here}/com.unity3d.player.UnityPlayerActivity -e 'unity' '-deepprofiling'