Version: Unity 6.0 (6000.0)
言語 : 日本語
Playable の例
Mecanim の FAQ

パフォーマンスと最適化

このページでは、Unity で最高のパフォーマンスを得るための情報を紹介しています。アニメーションシステムランタイムの最適化 を取り上げています。

注意3D アプリケーションで Unity で最高のパフォーマンスを発揮するキャラクターをモデリングするためのヒントは、最適なパフォーマンスのためのキャラクターモデリング を参照してください。

アニメーションシステム

Controllers

AnimatorController が設定されていなければ処理時間は増加しません。

シンプルなアニメーション

ブレンディングなしで 1 つの アニメーションクリップ を再生すると、Unity は 古い機能のアニメーションシステム を使うよりも遅くなる場合があります。古いシステムは非常に直接的なものであり、カーブをサンプリングして Transform に直接書き込んでいます。Unity の現在のアニメーションシステムには、ブレンディングに使用する一時的なバッファがあり、サンプリングされたカーブやその他のデータの追加コピーを行います。現在のシステムレイアウトはアニメーションブレンディングとより複雑な設定のために最適化されています。

スケールカーブ

スケールカーブのアニメーションは、移動や回転カーブのアニメーションよりも非常に処理コストがかかります。パフォーマンスを改善する場合は、スケールアニメーションを避けます。

注意これは、全区間にわたって常に長さの値が変わらない アニメーションクリップ のカーブには当てはまりません。この種のカーブは最適化されており、通常のカーブよりもコストはかかりません。デフォルトのシーンの値と同じ値を持つ定数カーブは、すべてのフレームに対しシーンに書き込みするわけではありません。

レイヤー

大抵、Unity はアニメーションを評価し、アニメーションレイヤーアニメーションステートマシン のオーバーヘッドを最小限に抑えています。アニメーターに追加するレイヤーのコストは同期化されているかどうかに関わらず、どのアニメーションとブレンドツリーがレイヤーによって再生されているかに依存しています。レイヤーのウェイトが 0 の場合、Unity はレイヤーの更新をスキップします。

ヒューマノイドとGeneric アニメーションタイプ

以下は、ヒューマノイドタイプとジェネリックタイプを使用する際に役立つヒントです。

  • ヒューマノイドアニメーションをインポートするときに、必要がない場合は、アバターマスク (class-AvatarMask) を使用して IK ゴールや指のアニメーションを削除します。
  • ジェネリックを使用する場合、ルートモーションを使用する方が、使用しない場合よりもコストがかかります。アニメーションがルートモーションを使用しない場合は、ルートボーンを指定していないことを確認してください。

シーンレベルの最適化

多くの最適化が可能ですが、以下は有用なコツの一部です。

  • Animator にクエリする際は、文字列の代わりにハッシュを使用してください。
  • 小規模の AI レイヤーを実装して Animator を制御してください。それによって、OnStateChange、OnTransitionBegin、その他のイベントの簡単なコールバックを提供することができます。
  • 状態タグを使用して、AI ステートマシンを Unity ステートマシンに簡単に一致させることができます。
  • 追加のカーブを使用してイベントをシミュレーションします。
  • 追加のカーブを使用してアニメーションに印をつけます。例えば、ターゲットマッチング と組み合わせて使用します。

実行時の最適化

可視性と更新

アニメーターの Culling ModeCull Completely に設定することでアニメーションを常に最適化し、スキンメッシュレンダラーの Update When Offscreen プロパティを無効にします。これにより、キャラクターが表示されないときに Unity がアニメーションを更新するのを防ぐことができます。

Playable の例
Mecanim の FAQ