質問: Unityでちょっとしたステージ内を歩き回れるようなものを作ったのですが、全く同じものをGameビューで再生しても、FPSが20~30程度で多少カクつくときと、スクリーンの上限である60ギリギリまで出てストレスなく、滑らかに動く時があります。単純にいつも重いわけではなく、普通に滑らかに動くときもあるので何が原因なのか良くわかりません。 体感ではPCを起動して、Unityを立ち上げてすぐだと低い数値になっているような気もします。逆に小一時間ほど弄っているといつの間にか普通に動いたりします。なので根本的にスペックが足りないとこいうことはないと思います。他にはProject Settings>Qualityの、Vsync Countを変えたりもしたのですがあまり変わっていない印象です。 ちなみに、Build And Runすると毎回滑らかに動きます。また、FPSの値ははStatsに表示されているものは正確でない場合もあるとネットで見たので、スクリプトで測定しました。 こういった場合、何か確認すべきことや原因になりそうなものは何でしょうか?一通り調べたつもりですが初心者なので見落としているところがあるかもしれません。どなたか詳しい方、どうかご教授ください。
回答: ぶっちゃけエディタ動作時はデバッグ用処理等色々なことをやっているので、ビルド後よりもFPSは低くなりがちです。 ビルド後に正常動作しているなら問題無いとは思いますが、一応チェックポイントは以下の通りです。 ### PCの負荷を確認 PC起動直後は各種常駐ソフトの起動やアップデートチェック等、Unityとは関係無い場所でCPUやメモリを使用している場合があります。 Unityエディタも起動直後はアセットの再チェック等を走らせていると予想されます。 (エディタでの動作だとビルド後よりも見にいくファイルが多いと予想されますので、PC負荷の影響を受けやすいのではないかと思います) Windowsならタスクマネージャー、Macならアクティビティモニタ等を利用して、PCそのものの動作具合を確認してみる。また、起動直後は「そういうもんだ」と思って少し置いてから動作させる等してみるといいと思います。 ### プロファイラーで確認 FPSが落ちるのは「負荷が上がった時」です。 で、負荷はどんな時でも上がる可能性があります。 スクリプト・物理演算・レンダリング・ファイル読み書き・ネットワーク等、「油断したらどこにでも発生しうるもの」ものだと思ってください。 ボトルネック(=負荷発生地点)を探すには、主にプロファイラー(Profiler)を使います。 (Unityのデバッガーを使う方法もありますが、エディタ上での問題検知ならまずプロファイラーかなと思います) プロファイラーウィンドウを使ってパフォーマンスの問題を診断する - Unity Profilerの使い方と最適化の目安の付け方(前編)【Unity】【Unite 2017 Tokyo】【最適化】 - (:3[kanのメモ帳] 【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術 他、「unity プロファイラー」でググるとたくさん情報が出るので参考にしつつ、原因を探ってみてください。 ### 余談 質問主さんが調べたことと回答内容が被る恐れがあるので、質問の際は「これは既に調べた」というものを記載してもらえるとありがたいです。以下もご確認ください。 質問するときのヒント|teratail(テラテイル)