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