Unity UI の最適化ガイド

確認済のバージョン: 5.3

-

難易度: Advanced

Unity UI によって機能するユーザーインターフェースの最適化は、非常に繊細な作業です。全ての状況に共通する規則はほとんどなく、それぞれの状況に応じた、システムの挙動を踏まえた上での慎重な判断が必要とされます。Unity UIを最適化する際に主に課題となるのは、ドローコールとバッチ処理の負荷とのバランスを取ることです。基本的な手法を使ってどちらかを削減することもできますが、複雑なUIの場合、この2つの間で妥協点を見付けることが求められます。

とはいえ、Unity UIの最適化も従来通り、プロファイリングから始めるのが理想的です。最適化を実行する前に行わなければならない主要なタスクは、パフォーマンスに関する観測可能な問題の具体的な原因がどこにあるのかを特定することです。Unity UIのユーザーが頻繁に直面する問題は、次の4つに分類できます。

  • GPU フラグメントシェーダーが過剰に使用される([例]フィルレートの過剰利用)
  • Canvas のバッチを再ビルドするために過剰なCPU時間が消費される
  • Canvas バッチの再ビルドが過剰に行われる(ダーティなデータが過剰に作られる)
  • 頂点の生成に CPU時間が過剰に消費される(通常はテキストからの生成の場合)

原理的には、GPUに送られる大量数のドローコールによってパフォーマンスが制約されるUnity UIを作成することは可能です。しかし実際には、GPUがドローコールでオーバーロードされるようなプロジェクトの場合、むしろフィルレートの過剰利用によって制約される可能性のほうが大きくなります。

このガイドでは、Unity UIの基盤となっている概念やアルゴリズム、コードについて解説するとともに、よくある問題とその解決方法もご紹介しています。このガイドは以下の5つの章に分かれています。

  1. Unity UIの基礎I』の章ではUnity UIに関する用語や、UIを描画するために実行される基本的な処理を詳しく解説しています。これには、バッチ処理されたジオメトリの作成に関する説明も含まれます。まずは、ぜひこの章から読まれることをお勧めします。
  2. Unity UIのプロファイリングツール』の章では、入手可能なツールを使ったプロファイリングデータの収集について解説しています。
  3. フィルレート、Canvas、および入力』の章では、Unity UIのCanvasおよびInputコンポーネントのパフォーマンスを向上させる方法を説明しています。
  4. Unity UIの制御の最適化』の章では、UI Text、Scroll Views、その他コンポーネント別の最適化について解説しています。また、その他いくつかのテクニックについてもご紹介しています。
  5. その他のテクニックとヒント』の章では、基本的なヒントや、よくある問題の回避策、その他の問題について解説しています。

UI ソースコード Unity UI のGraphicおよびLayoutコンポーネントは完全にオープンソースです。ソースコードはUnityのBitbucketレポジトリのUIのセクションで確認できます。