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



MeshRenderer 和SpriteRenderer都是继承自Renderer;
SpriteRenderer Inspector:
- Sorting Layer对应的是Renderer的sortingLayerName 字段
最大优先级,根据Sorting Layer的顺序:越在下面,越后渲染,显示在更前
- 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; }
...
}
网友评论