【NGUI】UIのドローコールを減らす

NGUIでUIを作る際に気をつける必要があるのが「ドローコール」です。 一回の描画あたりに画像を読み込む回数なのですが、これが増えてくるとゲーム内のパフォーマンスにも影響ができます。 今回はこの「ドローコール」を減らす方法を考えていきたいです。

NGUI ドローコール

まずは、現在使っているUIでどれくらいのドローコールがあるのかを調べる必要があります。 NGUIをインストールした際に、この測定するツール(ウィンドウ)も使えるようになります。

ツールバー [NGUI]->[Open]->[Draw Call Tool]を開きます。

NGUI  1

そうするとUnity上に新しいウィンドウが表示されます。

NGUI2  1

Draw Call Tool

[Draw Call Tool]には、一回のドローコールがどのMaterialを使って描画されているかがわかります。 下記の例では、UnityTestというテクスチャアトラスを描画していることがわかります。

NGUI3  1

このドローコールは、NGUIで作成をした[UIPanel]ごとに算出することもできます。 この場合UnityのSceneウィンドウ上で選択している画像やテキストの[UIPanel]のドローコールが表示されます。

NGUIUIPANEl  1

こちらのウィンドウを使って「ドローコール」を減らしていきましょう。

ドローコールを減らす

ドローコールを減らす方法はいくつかあるのですが、主には以下の様な方法があります。

  • テクスチャアトラスへ画像をまとめる
  • Depth を調整する

テクスチャアトラスへ画像をまとめる

これは基本的なことになるのですが、UIで利用する画像をテクスチャアトラスへまとめればその分描画をする回数が減ります。 できるだけ、一つのテクスチャアトラスに画像データをまとめましょう。 NGUIの場合簡単にテクスチャアトラスをまとめることができます。

[Atlas Maker]

NGUIAtlas  1

Depthを調整する

Depth(描画順)を調整することで無駄なドローコールを減らすことができます。 同じテクスチャアトラスを描画する場合でも、Depthが違う場合注意が必要です。

NGUIDepth  1

同じテクスチャ内で、Depthを設定しても、他のマテリアルのDepthによってドローコールが増える可能性があります。 この辺り、UIの表示順などを予め考慮をして設定をする必要があります。 (例、画像とテキストを描画するDepthを予め複数確保しておくなど)

最後に

このドローコールに関してはよほどパフォーマンスに影響をあたえるとしても、よほどのことが無い限り気にする部分ではないと思うのですが、もし描画が遅いなどあれば、こちらの方法を使って調べてみることをおすすめします。

UnityゲームUI実践ガイド 開発者が知っておきたいGUI構築の新スタンダードUnityゲームUI実践ガイド 開発者が知っておきたいGUI構築の新スタンダード
池和田有輔,時村良平

エムディエヌコーポレーション
売り上げランキング : 110674

Amazonで詳しく見る