uGUI で特定のオブジェクトの前後にレイヤーを移す


バリアントプレハブとか使ってるとなぜかレイヤーの順番がうまく変わらないことがあるので、無理やり変えてみた。
同じ階層限定。

public class SetLayerOrder : MonoBehaviour
{
    enum Order
    {
        Front,
        Back,
    }

    [SerializeField]
    private Order order;

    [SerializeField]
    private Transform targetObject;

    private void Start()
    {
        int myIndex = this.transform.GetSiblingIndex();
        int targetIndex = this.targetObject.GetSiblingIndex();

        if (myIndex < targetIndex && this.order == Order.Back) --targetIndex;
        else if (myIndex > targetIndex && this.order == Order.Front) ++targetIndex;

        this.transform.SetSiblingIndex(targetIndex);
    }
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です