こんにちは、Unityエンジニアのオオバです。

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

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

[object Object]

UnityのSpriteRendererとRendererの描画順ルール_0

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

###◆ケース2

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

UnityのSpriteRendererとRendererの描画順ルール_1

###◆ケース3

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


👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!

SpriteRendererとRenderer同士の描画順

では本題に入ります。

###◆ケース1

SpriteRendererの設定

Rendererの設定

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

###◆ケース2

SpriteRendererの設定

Rendererの設定

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

###◆ケース3

SpriteRendererの設定

Rendererの設定

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

###◆ケース4

SpriteRendererの設定

Rendererの設定

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

まとめ

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

オススメ記事
検証環境