こんにちは、Unityエンジニアのオオバです。
SpriteRendererとRendererの描画順がどういうルールになっているのかを調べました。
本題に入る前にSpriteRenderer同士の描画順についてまとめます。
[object Object]
- Sorting Layerが異なる
![UnityのSpriteRendererとRendererの描画順ルール_0](https://cdn-ak.f.st-hatena.com/images/fotolife/e/esakun/20170529/20170529004425.png#500__500)
=>下の方にあるSorting Layerほど手前に表示される
###◆ケース2
- Sorting Layerが同じ
- Order in Layerが異なる
=>Order in Layerの値が大きいものほど手前に描画される
![UnityのSpriteRendererとRendererの描画順ルール_1](https://cdn-ak.f.st-hatena.com/images/fotolife/e/esakun/20170529/20170529004114.png#656__308)
###◆ケース3
- Sorting Layerが同じ
- Order in Layerが同じ
=>カメラから近いオブジェクトほどが手前に描画される
👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!
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の方が手前に描画されるようです。
![](https://i.gyazo.com/87b096ac54d119b606a489c4ccd80aaf.jpg)
この記事が気に入ったらフォローしよう
オススメ記事
検証環境
- Unity5.6.1p1