プロファイラスパイクについては、my previous questionをフォローアップしてください。私はUnity3Dでディーププロファイルオプションを有効にすると、ScrollRect.LateUpdate()
の下のコールが、わずかコンポーネントのガベージコレクションのために2.4 MBのメモリを占有していることがわかります。次のスナップショットからUnityがComponent.GetComponent()
を4046回、LateUpdate()
メソッドで呼び出すと、パフォーマンスの問題が発生することが明らかです。私のアプリケーションはUIが激しいですが、GCのための2.4MBはまったく受け入れられません。ScrollRect.LateUpdate()プロファイラでGCを割り当てるスパイクが増えます。2.4MB
通常更新のいずれかの方法でGetComponent()
を使用しないことをお勧めしますが、ユニティ独自の実装では、慣例を破っています。パフォーマンスの問題を回避するために、1つのシーンで持つことができるUIアイテムの数が制限されます。
このプロファイリングデータは、メニューオブジェクトをアクティブにしたときのフレームからのみです。
2.4MBのメモリを削減/節約するための回避策はありますか?