5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

uGUI バッチング挙動調べる

Posted at

uGUIのバッチング挙動調べる。

環境

Mac,Unity2018.3.11f1, Pro,

素材

バッチングとは

GPUに描画命令を出す際に各UIをまとめて一斉に行う処理のこと。
uGUIのバッチング処理は割と優秀らしい。

バッチを見る

適当にUIを組む

スクリーンショット 2019-04-25 23.15.13.png

バッチ数確認

ゲーム起動後、ProfilerのUI欄を見る。
バッチ数11。
スクリーンショット 2019-04-25 23.16.45.png

バッチの内訳を見る

バッチ数11の内訳はフレームデバッカーの方が見やすいのでフレームデバッカーを使う。

Apr-25-2019 23-29-35.gif

  1. ダイアログの背景画像を描画
  2. ダイア6個描画(同じTextureのため)
  3. アイコン1つ描画
  4. ボタンの背景描画
  5. アイコン2つ描画
    6 ~ 8. 残り描画

5でアイコンが2つ描画されるのすごい。同じテクスチャを使っている&他のテクスチャを使ったUIとの入れ子になってなければバッチングが行われる。この条件を満たすために5のアイコンを最初の方に描画している。

SpriteAtlasを使う

SpriteAtlasを作成し、画像フォルダを指定した。
UI描画時に他の画像映り込まないようにAllow RotationとTight Packingのチェックを外した。
スクリーンショット 2019-04-25 23.37.21.png

SpriteAtlas後のバッチ

バッチ数2・・・。劇的に減った。
Apr-25-2019 23-41-10.gif

非アクティブなGameObject

非アクティブなGameObjectがあるとバッチ数はどうなるのか。Windowの背景とダイア以外を非アクティブにした。
非アクティブだと描画されない。なのでButtonのTextは描画されず、バッチ数1になった。
スクリーンショット 2019-04-25 23.47.58.png

動くとどうなるのか

動く星オブジェクトを置いて再生
Apr-25-2019 23-54-20.gif

バッチ数は2のまま。動いていてもバッチされる。(Layoutの再計算は走っているはず)
スクリーンショット 2019-04-25 23.55.43.png

テキストの上にUIを置くと

テキストの上に星を置いた。バッチ数は3になった。他のテクスチャが間に入ってしまうとバッチングされないため。
スクリーンショット 2019-04-25 23.57.25.png

CanvasGroupをつけると

星にCanvasGroupコンポーネントをつけた。バッチ数は2。このコンポーネントの有無でバッチ数は変わらない。
スクリーンショット 2019-04-25 23.58.52.png

Canvasをつけると

星にCanvasコンポーネントをつけた。バッチ数は3に。このコンポーネントをつけるとOverride Sortingしてなくてもバッチングされない。
スクリーンショット 2019-04-26 0.00.17.png

スクリーンショット 2019-04-26 0.00.00.png

参考文献

https://docs.unity3d.com/ja/2018.1/Manual/DrawCallBatching.html
https://www.slideshare.net/UnityTechnologiesJapan/unityuitips

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?