2012年10月4日木曜日

NGUI 描画順について

公式フォーラムでNGUIの描画順について作者からの説明があったため翻訳内容を共有したい:

http://www.tasharen.com/forum/index.php?topic=1858.0
October 01, 2012, 04:55:59 PM


FAQに書いても人がそれを読んでくれないことが良くわかったのでフォーラムの目立つ位置に付箋を貼ることにしたよ。いまでも毎日この質問が出てきて困っているんだ。

問い合わせ
Depthをウィジェットに設定しても前後関係がおかしいことあるけど何で?

Depthプロパティは同一パネルの同一Atlasのウィジェットの描画順を判定するのに使用される。異なるAtlasを使用してるのであればTranformのZ座標を変更してウィジェットをカメラの一番前に移動してほしい(Zをマイナス値にする)。もし異なるパネルを使用しているのであればパネルのTransformのZ座標を一番前に移動したいパネルについてZ値をマイナス値のより小さい値に設定してほしい。そもそも、出来ることならばAtlasがひとつになるように管理できれば理想的で、その後の負担も多いに減る。

技術解説
通常UnityはすべてをTransformのZ座標でソートを行う。カメラに近いオブジェクト(より小さいZ座標)はより遠いオブジェクト(より高いZ座標)の前に重なるようになる。これはUIが平らでOrthoカメラであれば何ら問題はない(2D UIの場合)。しかし3D UIについては少しでもウィンドウを回転させることはウィジェットへの距離を変更するため、このアプローチの意味がなくなる。この理由によりDepthという概念を作成した。固定の値であるため、Transformの値変更にかかわらず一定の値となる。残念ながら異なるDraw Callの場合にDepthを強制的に参照させることができないため(別パネル/Atlasは異なるDraw Callになる)、どうしても異なるパネルやAtlasの場合はZ座標を調整するしかない。
--

正直、日本語サイトですでにこの問題は丁寧に検討されたスライドが存在していて、あえて付け足すところはないようにおもう。

「もののけ大戦“陣”」製作事例
http://www.slideshare.net/RyoheiTokimura/ss-14048278
※スライド#44~#50あたり

ただ、スライドをみてもこれについて悩んでいる人は多いと感じる。作者のほうでも新たな手立てを考えてくれないかな??

0 件のコメント:

コメントを投稿

ブックマークに追加

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

自己紹介

自分の写真
Unity3D公式マニュアル翻訳やってる人がスマホ(iPhone, Android)のゲーム開発しています。気軽に面白く初心者が遊べる内容がモットー。Blogでは開発情報をひたすら、Twitterではゲーム作成の過程で参考にしている情報を中心につぶやきます

ページビューの合計

過去7日間の人気投稿

ブログ アーカイブ