読者です 読者をやめる 読者になる 読者になる

(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

Depthを設定する事によりNGUIでDrawCallsを減らす【Unity】【NGUI】

Unity NGUI

このエントリーをはてなブックマークに追加

勘違い


一つ前の記事で考え違いがあったみたいで、アドバイスを頂きました!

ラベル付きボタン複数を設置する際にDrawCallsを減らす【Unity】【NGUI】 - (:3[kanのメモ帳]



ということで、ちょっと修正記事をば。


Depth


f:id:kan_kikuchi:20140504201245p:plain

Depthというのはレイヤー設定のことで、重ねる順番を決めるものです。
UISprite(Script)やUILabel(Script)のWidgetで設定する事ができ、描画もこのDepthの順番に行われるようです。


Widget ToolからLabel付きButtonを連続生成


前の記事で最初にやっていたLabel付きButtonを連続生成すると、Depthは作られた順に自動で設定され、描画する時も以下のようにボタンとラベルを交互に描画する事になってしまいます。

ボタンラベルボタンラベルボタンラベル

ラベルとボタンでは使っているAtlasが違うので、何度も呼び出す事になり、DrawCallsが増えていたんですねー


ButtonとLabelを別々に生成


それで前の記事での改善案としてあげたButtonとLabelを別々に生成した時にDrawCallsが減ったのは、Buttonを三つ作った後にLabelを三つ作ったので偶然、同じAtlas毎にDepthの値が固まっていたんですね(;´ x `)>

ボタンボタンボタンラベルラベルラベル


改善策


ということで別々に作る必要は無く、同じAtlas毎にDepthを揃えれば(近づければ)、各Atlasが呼び出されるのが一度になりDrawCallsも減らすという事になります。
例えばButtonのDepthは0〜、LabelのDepthは100〜みたいにすれば解決!