テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】パフォーマンスを得るための16のヒント

f:id:tsubaki_t1:20160512234225j:plain

プロファイラに関する記事を書く過程で、パフォーマンスに関して良い感じの記述があったので、メモ。

support.unity3d.com

Tips

  1. FPSはCPUとGPUの使用内容によって決まる
    CPU:物理演算・ゲームのコード・スキニング(GPU skiningでない場合。モバイルはNEONで最適化)、パーティクル、Raycasting(レンズフレア等に使用)等が問題となる
    GPU:フィルレート、シェーダー、ドローコール、イメージエフェクト等が問題となる
  2. 使用してないコールバック(StartやAwake)は削除しておく。
  3. 物理演算するオブジェクトの数や計算回数はできるだけ減らす。
  4. fixedTimeStepの値を減らして、呼出回数を減らす。標準設定では50FPS想定なので50FPSが不要な場合。(60FPS想定なら上げないとガクガクになる)
  5. 静的なコライダー(rigidbodyの無い奴全般)は動かさない
    (大きさ・位置・方向・有効化/無効化を変化させない)
  6. 絶対見えないレンズフレアはOFFにする。内部的にRaycastでチェックしてるぽ
    (Culling Groupとか使えるかな)
  7. AnimationClipから不要な曲線や冗長なキーフレームを削除
  8. デバイス特性にしたがってQualitySettingsを設定。アンチエイリアス削除やシャドウの範囲を限定、LODの数を少なく。
  9. 非圧縮AudioClipはCPUに優しいので、サイズの小さい音楽なら非圧縮が使える。
    (サイズの大きい音楽にはStreaming。最近はAssetBundleからも読める)
  10. 検索の代わりにHashSetを使用
  11. 検索するよりキャッシュを活用
  12. 可能であれば複数のカメラは使用しない
  13. 何度もメッシュを変形する予定があるならMarkDynamicを使用
  14. 動的なメモリ割り当てやGC Allocは避ける。
  15. オブジェクトプーリングを使う
  16.  AwakeFromLoad(テクスチャロード時等に行うドライバへの転送処理)は高価。

関連

answers.unity3d.com

tsubakit1.hateblo.jp