【Unity】uGUI Text のバッチング
uGUI では Hierarchy の上にあるものから順番に描画される
この際に同じ Atlas の場合 バッチングされる
そのため間に Text をはさんだ場合バッチングが途切れると思っていたが
特定のケースでバッチングされることがあったのでそれについてまとめる
※Unity2019.4.0f1 で検証
現象

の状態場合 Image の間に Text が挟まれているため バッチングされず
6回 Draw が走るものだと考えていましたが Frame Debugger で確認したところ
2回 Draw で描画されていました


調査
Atlas が同一でない画像を途中に追加
New の位置に 追加した

3 Draw になったが追加した画像が最後に描画された



Atlas が同一な画像を途中に追加
New の位置に 追加した

最初と変わらず 2 Draw


Atlas が同一ではない画像を最初に追加
4 Draw




Atlas が同一ではない画像を最初に追加 し 次に Atlasが同一な画像を追加
3 Draw



Atlas が同一ではない画像を途中に追加
間に追加した場合、追加した画像が最後に描画されその次に画像下のテキストが描画されました
4 Draw




Text の一部が Imageによって隠されている場合
テキストの一部が隠されている場合はバッチングが効かず 4 Draw でした




TextMeshPro を間に挟んだ場合

TextMeshPro と Textを交互に挟んだ場合でも どちらも最後にまとめて描画されていた
3 Draw



推測
Text から見て 同じAtlas参照の場合がまとめてバッチングされていると考えられる
つまり、
SprietA
└ Text1
├ SprietB
│ └ Text2
├ SprietA
└ Text3
の場合 Text1 と Text3 の参照画像構成が同一なので バッチングされる
SprietA
└ Text1
├ SprietB
│ └ SprietA
│ └ Text2
└ SprietB
└ SprietA
└ Text3
の場合 Text2 と Text3 の参照画像構成が同一なので バッチングされる
このバッチングについて調査してみたが、検索力が足りず成果は得られなかった