Unity アンドロイド端末で起動時ゲームが重い時の対処法 Rendering Device.Present が原因の時
今回はプロファイル[Profiler]でアンドロイドが異常に重かったので軽くするためにいろいろする記事です。
Profilerって何?って人は↓
【Unity】CPUプロファイラでパフォーマンスを改善する 前編 - テラシュールブログ
そもそもアンドロイドでの立ち上げの方法はこちら
UnityのRemoteProfilerを使おう - かせノート。
また、Unity2017からProfilerのTCPポートが34999に変わったので設定注意が必要です
Unity2017からProfilerのTCPポートが34999に変わった件 - Qiita
まず、今回自分が重かった場所はRendering Device.Presentが原因でした。
なのでRendering Device.Presentが重い人向けに書きます。 翻訳してるので日本語が変ですが許し
1.画像効果
カメラを確認してください。Flare Layer、Anti-aliasingなどの画像効果がある場合は無効にします。
Flare Layer
Anti-aliasing
docs.unity3d.com
2 .UIの効果
すべてのUIイメージ、RawImagesとテキストをチェックしてください。
あなたが持っている場合Outline、ShadowまたはPosition As UV1コンポーネントが取り付けられImages、RawImagesそしてTexts、これは問題を引き起こす可能性があります。通常、あなたがこれの倍数を1つImageにつないでいるとき 、RawImageおよびText。
3. ライト設定
あなたの光を選択していることを確認してください決議の下の影の種類がされていないに設定され、非常に高解像度です。
4.品質設定で、V同期数を同期しないに変更します。
詳しくは
UnityでのFPS設定まとめ - スマゲ
5.0アルファのスプライトと画像をチェックして無効にする
6.[プレーヤ設定]で、[Auto Graphics API]を無効にしてから、[Graphics API]を[OpenGLES2]に変更します。
7.カスタムシェーダ
カスタムシェーダ(非標準シェーダ)を使用していますか?一時的に無効にしてください。高価な、または悪い書き込みシェーダがこの問題を引き起こす可能性があります。
最後にまたバッチ処理を確認してください。 Unity Editor、ゲームウィンドウ、右上、統計情報をクリック。通常、これはCamera.Render> Drawが呼び出される回数と同じくらい遅延として表示されますが、同期時間によって数値が難読化されている可能性があります。モバイルの場合、描画が多いとパフォーマンスが低下します。モバイルでは、この数を100未満、理想的には10未満に保ちたいと思います。高いバッチ処理数 - >より少ない描画呼び出し、およびあらゆる種類の処理がバッチ処理を中断します。
あとは、
PlayerSettingsのマルチスレッドレンダリングをチェックしますか?
Unityのドキュメントhttps://docs.unity3d.com/Manual/class-PlayerSettingsiOS.htmlによると、マルチスレッドレンダリングはMetalグラフィックAPIでのみ
機能することに注意してください。MetalではなくOpenGLES2を使用しているため、マルチスレッド機能が無効になっている可能性があります。
Auto Graphics APIをチェックしてMetalを使用し、GLES2をフォールバックとして使用します。