木骰

NGUI:调整材质球的RenderQueue,解决UI和粒子的显示问题

在UI上放粒子特效的时候有时候会需要粒子特效显示在UI前面(因为UI的RenderQueue默认在3000,高于粒子),解决这个问题有几种办法:

1.修改NGUI UIPanel的RenderQ,调到3000以下,但是这种做法经常会使UI的层级变得更加混乱
2.增加一个相机,用来单独渲染特效。 这个太麻烦了
3.修改粒子的RenderQueue,而不动UI的RenderQueue,这个虽然乍看着挺麻烦的,但是我觉得比上两种都简单,并且更好控制

写一个用来设置RenderQueue的脚本


[ExecuteInEditMode]
public class RenderPropety : MonoBehaviour {

    public int renderQuene;

    Material mat;

    void Start()
    {
       // Invoke("UpdateMatPropety",0.04f);
    }

    void CacheMaterial()
    {
        var render = transform.GetComponent();
        if (render != null )
        {
            mat = render.sharedMaterial;
        }
           
        else
        {
            mat = transform.GetComponent< UIWidget>().material;
        }
           
    }

    void Update()
    {
        if(!Application .isPlaying)
        {
            UpdateMatPropety();
        }
    }

    void UpdateMatPropety()
    {
        if (mat == null )
            CacheMaterial();
        mat.renderQueue = renderQuene;
     //   Debug.Log("material render "+mat.renderQueue);
    }

}

设置编辑器下可运行,把这个脚本挂在粒子上, 在Inspactor面板中修改了之后立即就能生效了。

— 于 共写了768个字
— 文内使用到的标签:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*