SpriteRenderer 与 MeshRenderer 渲染排序问题

Spriterenderer 设置渲染层级时可以创建 Sorting layer 然后指定层级关系,最先创建的为最先渲染的,放在最底层。相同层级设置Order layer 的数值,数值越大越靠前

 

Mesh renderer 在渲染时没有指定的layer。但是他们的父类都是继承的Renderer。可以通过代码来指定与Spriterenderer 的 层级顺序。

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SetMeshLayer : MonoBehaviour {

    public string layerName;
    public int order;

    private MeshRenderer rend;
    void Awake()
    {
        rend = GetComponent();
        rend.sortingLayerName = layerName;
        rend.sortingOrder = order;
    }

    public void Update()
    {
        if (rend.sortingLayerName != layerName)
            rend.sortingLayerName = layerName;
        if (rend.sortingOrder != order)
            rend.sortingOrder = order;
    }

    public void OnValidate()
    {
        rend = GetComponent();
        rend.sortingLayerName = layerName;
        rend.sortingOrder = order;
    }
}

 

你可能感兴趣的:(Unity)