このページでは、Unity で最高のパフォーマンスを得るための情報を紹介しています。アニメーションシステム と ランタイムの最適化 を取り上げています。
ノート: 3D アプリケーションで Unity で最高のパフォーマンスを発揮するキャラクターをモデリングするためのヒントは、最適なパフォーマンスのためのモデル作成 を参照してください。
Animator コンポーネント に Controller が設定されていなければ処理時間は増加しません。
ブレンディングなしで 1 つの アニメーションクリップ を再生すると、Unity は 古いアニメーションシステム を使うよりも遅くなる場合があります。古いシステムは非常に直接的で、カーブをサンプリングし、直接 Transform に書き込みます。Unity の現在のアニメーションシステムには、ブレンディングに使用する一時的なバッファがあり、サンプリングされたカーブやその他のデータの追加コピーを行います。現在のシステムレイアウトはアニメーションブレンディングとより複雑な設定のために最適化されています。
スケールカーブのアニメーションは、移動や回転のアニメーションよりも非常に処理コストがかかります。パフォーマンスを改善する場合は、スケールアニメーションを避けます。
Note: This does not apply to constant curves (curves that have the same value for the length of the animation clip). Constant curves are optimized, and are less expensive than normal curves. Constant curves that have the same values as the default scene values do not write to the scene every frame.
大抵、Unity はアニメーションを評価し、アニメーションレイヤー と アニメーションステートマシン のオーバーヘッドを最小限に抑えています。他のレイヤーを Animator に追加するコストは同期されているかどうかにかかわらず、レイヤーによって再生されるアニメーションとブレンドツリーによって異なります。レイヤーのウェイトが 0 の場合、Unity はレイヤーの更新をスキップします。
以下は、ヒューマノイドタイプとジェネリックタイプを使用する際に役立つヒントです。
多くの最適化が可能ですが、以下は有用なコツの一部です。
Animator の Culling Mode を Based on Renderers に設定することによってアニメーションを常に最適化し、Skinned Mesh Renderer の Update When Offscreen プロパティを無効にします。これにより、キャラクターが表示されないときに Unity がアニメーションを更新するのを防ぐことができます。