SpriteRenderer 与 MeshRenderer的渲染排序层级

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

文字(MeshRenderer)与图片(SpriteRenderer)的渲染层级.png
spriteRenderer.png
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<MeshRenderer>().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; }
    ...
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容