Amazon10/19まで!プライム感謝祭開催中!セール会場へ

Unity Profilerの使い方|重いフレームを見つけて原因を調べる手順

Unity Profilerの使い方 / 重いフレームの原因を探す

Unityの動作が重いときは、設定をまとめて下げる前にProfilerで時間のかかっている処理を確認します。CPU、描画、メモリなどを分けて調べると、効果のある修正を選びやすくなります。

最初の目標は、グラフの数字をすべて理解することではありません。「どの操作で重くなるか」「そのフレームのどの処理が長いか」を記録し、1つ変更した後で同じ場面を測り直すことです。

目次

計測前に再現する場面を決める

たとえば「敵を50体出した瞬間」「インベントリを開いたとき」「同じ場所を移動している間」のように、重くなる条件を具体化します。起動直後と通常プレイを混ぜると、ロードや初期化の負荷を、毎フレーム発生する問題と取り違えやすくなります。

記録する条件記入例
対象Windowsの開発用ビルド
画面設定解像度、品質設定、VSync
再現操作同じセーブデータでメニューを開く
見る区間開く直前から表示後まで

例の環境が必須という意味ではありません。自分の製品で想定している端末と条件を記録し、変更前後を比較できる状態にすることが大切です。

Profilerで記録し、問題のフレームを選ぶ

  1. Window → Analysis → Profilerを開きます。
  2. 計測対象のプレイヤーを確認し、記録を有効にします。
  3. Playモードや対象ビルドで、重くなる操作を再現します。
  4. 必要な区間を取れたら記録を止めます。
  5. CPU Usageなどのグラフで時間が伸びたフレームを選びます。

まずEditor上で原因の候補を探す方法でも構いません。ただし、Editor自身の処理や開いているウィンドウの影響があるため、最終的な判断は対象端末のビルドでも確認します。ウィンドウの各表示はUnity公式のProfilerウィンドウ解説を参照できます。

TimelineとHierarchyを使い分ける

Timelineでは、処理がどのスレッドでどの順番に実行されたかを見ます。長い区間が、実際の計算なのか、ほかの処理を待っている時間なのかを考える入口になります。

Hierarchyでは、処理を階層で追い、時間がかかる項目を探します。親の時間には子の処理が含まれるため、上位の大きな値だけを見て「この関数だけが遅い」と結論づけないようにします。展開して、どの子処理が時間を使っているかを確認します。

待機を示す項目が長い場合、その項目名を見つけて消せば速くなるとは限りません。VSync、GPU側の処理、別スレッドとの同期などを合わせて調べ、待っている理由を切り分けます。

フレーム時間で目標を考える

60fpsを目指すなら1フレームは約16.7ms、30fpsなら約33.3msです。平均が収まっていても、ときどき長いフレームがあると引っかかって見えます。平均だけでなく、再現するスパイクにも注目します。

CPU時間とGPU時間は単純に足してフレーム時間になるとは限りません。処理の並列実行や待機があるため、まずどちらがボトルネックになっているかを確認します。GPU計測の対応状況は環境によって異なるので、表示されない場合は対象プラットフォームの対応も確認してください。

GC Allocは毎フレーム発生するかを見る

CPU UsageでGC Allocが繰り返し出ている場合は、一時的なオブジェクト生成などを調べるきっかけになります。ただし、割り当てがあることと、そのフレームでガベージコレクションが発生したことは別です。

ログの組み立て、文字列の連結、頻繁な配列生成などが疑わしい場合でも、先に計測して発生箇所を確認します。ロード時に一度だけ行う処理と、Update内で毎フレーム行う処理では、修正の優先度が変わります。

Deep Profileは必要な場面で絞って使う

Deep Profileは詳しく追える反面、計測の負荷も増えます。最初から常用して、その数値を通常プレイの性能として扱わないようにします。通常の計測で問題の範囲を絞り、詳細が必要な箇所を調べるために使います。

同様に、Profilerを接続した開発用ビルドと、リリース用ビルドでは条件が異なります。実機への接続や開発用ビルドの設定はUnity公式のアプリケーション計測ガイドで確認できます。

修正は1つずつ行い、同じ条件で測り直す

描画設定、スクリプト、テクスチャを同時に変更すると、どれが効いたのか分からなくなります。原因の仮説を1つ決め、変更前後で同じ操作を繰り返します。

  • 問題のフレーム時間が短くなったか。
  • 通常時の負荷が悪化していないか。
  • メモリ使用量や画質との交換条件がないか。
  • 対象端末でも改善が再現するか。

計測結果と変更内容をセットで残すと、次に重くなったときも比較できます。Profilerは数字を眺めるための画面ではなく、どの修正を選ぶか判断するために使うと効果的です。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

Unityのおすすめ書籍

開発PCの選び方

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次