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よりも優先順位が低いのでその点だけ注意が必要です。
参考関連