おれ、Unity2Dでゲーム作るんだ。

Unity2Dをメインに、覚書などを記事にしていきます。

【uGUI】負荷をかけない透明なuGUIボタン

負荷をかけない透明なuGUIボタン

画面のどこでもタップしたらシーン遷移するといった処理を行う場合に、 画面全体を覆うようなButtonを配置して、画像を透過にして使用することがあると思います。

実は透明でも処理コストはかかる

ただ、透明だとしても処理はされています。

Game画面のStatusを確認すると、Batchが2となっています。 f:id:xev:20210319110852p:plain

α値を0にして、完全に透明にしても、

f:id:xev:20210319110915p:plain

同じくBatchは2です。

f:id:xev:20210319111051p:plain

つまり、見えていようが透明だろうが、Imageに対して律儀にちゃんと描画が走っているわけです。

この場合は、Buttonにアタッチされている、Buttonの文字を描画するのに1回画像に1回の計2回です。

CanvasRendererのCull Transparent Mesh

そこで、用意されているのがCanvasRendererのCull Transparent Meshプロパティ。

f:id:xev:20210319111418p:plain

uGUIでButtonを作ると、基本的にCanvasRendererがくっついています。

これにはCull Transparent Meshというプロパティがあり、 こいつにチェックを入れると、透過状態は無視してくれるようになります。

f:id:xev:20210319111513p:plain

Butchが1と言うことは、文字を描画するだけの処理になりました。 同じく透明なオブジェクトは無視するようになったので、Tris/Vertsなどの頂点数なども削れています。

透過画像によって、実際のボタンの画像よりも大きな範囲をもつボタンを作るような場合は、Cull Transparent Meshを有効にするのが吉ということですね。