SpriteRenderer 与 MeshRenderer的渲染排序层级

解决方案:MeshRender设置sortingLayerName和sortingOrder字段,就可以与SpriteRender一起排序。

SpriteRenderer 与 MeshRenderer的渲染排序层级_第1张图片
文字(MeshRenderer)与图片(SpriteRenderer)的渲染层级.png
SpriteRenderer 与 MeshRenderer的渲染排序层级_第2张图片
spriteRenderer.png
SpriteRenderer 与 MeshRenderer的渲染排序层级_第3张图片
MeshRender.png

MeshRenderer 和SpriteRenderer都是继承自Renderer;

SpriteRenderer Inspector:

  1. Sorting Layer对应的是Renderer的sortingLayerName 字段

最大优先级,根据Sorting Layer的顺序:越在下面,越后渲染,显示在更前

  1. order in Layer对应的是Renderer的sortingOrder字段;

相同层Sorting Layer,不同Order in Layer(层内顺序):根据Order in Layer-越大,越后渲染,显示在更上层

MeshRender

MeshRender只是Inspector面板上没有这两个字段而已,设置Renderer的sortingLayerName和sortingOrder字段,就可以参与SpriteRender的排序

MeshRender的Sorting Laye(sortingLayerName)默认是Default,order in Layer(sortingOrder)默认是0;

C#: gameObject.GetComponent().sortingOrder = 1;
Lua: levNumText.gameObject:GetComponent("MeshRenderer").sortingOrder = 10

源码、接口

MeshRenderer 继承自Renderer:

//
// 摘要:
//     ///
//     Renders meshes inserted by the MeshFilter or TextMesh.
//     ///
public sealed class MeshRenderer : Renderer

SpriteRenderer也继承自Renderer:

//
// 摘要:
//     ///
//     Renders a Sprite for 2D graphics.
//     ///
[RequireComponent(typeof(Transform))]
public sealed class SpriteRenderer : Renderer

Renderer 类:

//
// 摘要:
//     ///
//     General functionality for all renderers.
//     ///
[RequireComponent(typeof(Transform))]
public class Renderer : Component
{
    ...
    //
    // 摘要:
    //     ///
    //     Name of the Renderer's sorting layer.
    //     ///
    public string sortingLayerName { get; set; }
    //
    // 摘要:
    //     ///
    //     Renderer's order within a sorting layer.
    //     ///
    public int sortingOrder { get; set; }
    ...
}

你可能感兴趣的:(SpriteRenderer 与 MeshRenderer的渲染排序层级)