Unityの2Dスプライトの描画順序の管理は、Unity5.6でGraphicSettings.TransparencySortMode.CustomAxisが追加されたことでさらに簡単になりました。
例えば「Y座標が下のやつを手前に描画、上のやつを奥に描画する」
(キャラクター画像は臼井の会 香月清人様のものです)
Unity 5.6以前は、Updateメソッド内でいちいちSpriteRenderごとにOrderInLayerを正しく設定する必要がありました。
Unity 5.6からはEdit > ProjectSettings > Graphics > Camera Settingsで
- Transparency Sort ModeをCustomAxisに
- Transparency Sort Axisを(0.0F, 1.0F, 0.0F)に
とするだけで、「Y座標が下のやつを手前に描画、上のやつを奥に描画する」を実現することができるようになりました。
わざわざコードを書く必要がなくなりました。
また、ProjectのGraphics Settingをいじるのが嫌な人は、次のようにCameraコンポーネントのプロパティを設定することで実現することができます。
using UnityEngine;
public class OrderedCamera : MonoBehaviour
{
    void Awake()
    {
        var camera = GetComponent<Camera>();
        camera.transparencySortMode = TransparencySortMode.CustomAxis;
        camera.transparencySortAxis = new Vector3(0.0F, 1.0F, 0.0F);
    }
}
この設定による描画順序の制御は、OrderInLayerよりも優先順位が低いのでその点だけ注意が必要です。
参考関連
