何の記事?
UnityのCinemachineは非常に便利なパッケージですが、使い方によって重くなることがあります。
最適化のための情報を見つけるのに苦労したため、日本語でも情報を残しておきます。
ちなみに以下のスレッドでUnityのGregorylさんが言っていることを紹介しているだけです。
https://forum.unity.com/threads/cinemachine-boundary-performance.806643/
効果を確認した環境
Unity 2022.3.4f1
Cinemachine 2.9.7
StandbyUpdateをNeverにする
最初にやるべきなのはVirtualCameraにある、StandbyUpdateの変更です。
カメラがアクティブで無い時に計算を走らせるかどうかを指定しています。
初期値はRound Robinとなっています。
VirtualCameraを色んな角度からのカットを保存するために使うと、
VirtualCameraの数が飽和して、この処理が非常に重くなります。
どうもVirtualCameraがついているオブジェクトを非アクティブにしても動いているようです。
非アクティブにするだけでは処理負荷が変わりませんでした
VirtualCameraが多い場合は、StandbyUpdateがNeverで可能な運用を探るか、
一部のカメラだけUpdateを有効化するようにしましょう。
CinemachineBrainのUpdateMethodをLateUpdateに
CinemachineBrainのUpdateMethodをLateUpdateに変更します。
SmartUpdateよりもパフォーマンス的に有利とのこと。
じゃあSmartって一体…?とは思いますが
ビルドセッティングのDeepProfillingとScriptDebuggingをfalseに
Devlopmentビルドを使っている場合は、
ビルドセッティングのDeepProfillingとScriptDebuggingをfalseにしましょう。
オーバーヘッドが発生して遅くなるようです。
不便ですが、不正確なデータに惑わされるよりはマシですね……
以上です!
私の場合はこれでかなり早くなりました!!
ぜひお試しあれ!