渋谷ほととぎす通信

完全趣味でやってるUnityメモ。説明できないところを説明できるようにするための個人ブログ。昨日の自分より少しでも大きくなれるように。。。 ※所属団体とは一切関係がありません

SpriteRendererとRendererの描画順ルール


f:id:esakun:20150730215258g:plain

SpriteRendererとRendererの描画順がどういうルールになっているのかを調べました。

本題に入る前にSpriteRenderer同士の描画順についてまとめます。

◆ケース1

  • Sorting Layerが異なる

f:id:esakun:20170529004425p:plain:w300

=>下の方にあるSorting Layerほど手前に表示される

◆ケース2

  • Sorting Layerが同じ
  • Order in Layerが異なる

=>Order in Layerの値が大きいものほど手前に描画される

f:id:esakun:20170529004114p:plain:w300

◆ケース3

  • Sorting Layerが同じ
  • Order in Layerが同じ

=>カメラから近いオブジェクトほどが手前に描画される


SpriteRendererとRenderer同士の描画順

では本題に入ります。

◆ケース1

SpriteRendererの設定

  • Sorting Layer : Default
  • Order in Layer : 0

Rendererの設定

  • RenderQueue : 3000
  • ZWrite Off

=>カメラに近かった方が手前に描画される

◆ケース2

SpriteRendererの設定

  • Sorting Layer : Default
  • Order in Layer : 1以上

Rendererの設定

  • RenderQueue : 3000以上
  • ZWrite Off

=>SpriteRendererが手前に描画される

◆ケース3

SpriteRendererの設定

  • Sorting Layer : Default以外
  • Order in Layer : いくつでも

Rendererの設定

  • RenderQueue : 3000以上
  • ZWrite Off

=>SpriteRendererが後から描画される

◆ケース4

SpriteRendererの設定

  • Sorting Layer : どれでも
  • Order in Layer : いくつでも

Rendererの設定

  • RenderQueue : いくつでも
  • ZWrite On

=>カメラから近いオブジェクトほどが手前に描画される

まとめ

Sprite Layer : Default, Order in Layer : 0のとき、もしくはRendererのShaderのZWriteがOnのとき、Rendererとの描画順はカメラからの距離で変更可能だということがわかりました。その他の設定になってしまうとSpriteRendererの方が手前に描画されるようです。

環境

  • Unity5.6.1p1

あわせてどうぞ

www.shibuya24.info

www.shibuya24.info