对于unity 粒子效果在UI界面显示的方法问题,废话不多说,我直接上方法和代码。

方法一:提供一个脚本,放在粒子上。

调整相应的renderQueue使粒子显示在UI前面。如果有些UI需要显示在粒子前面,记得修改相应UI的renderQueue。

using UnityEngine;  
using System.Collections;   
public class SZUIRenderQueue : MonoBehaviour {  
      
    public int renderQueue = 3000;  
    public bool runOnlyOnce = false;  
      
    void Start()  
    {  
        Update();  
    }  
      
    void Update()  
    {  
        if (renderer != null && renderer.sharedMaterial != null)  
        {  
            renderer.sharedMaterial.renderQueue = renderQueue;  
        }  
        if (runOnlyOnce && Application.isPlaying)  
        {  
            this.enabled = false;  
        }  
    }  
}  


方法二:去官方下载粒子的Shader,之后手动在Shader里面修改RenderQueue。
http://unity3d.com/unity/download/archive  (Built-in shaders)

方法三:

using UnityEngine;  
  
class SZUIRenderQueueToWidget : MonoBehaviour  
{  
    public UIWidget widget;  
    public int rendererQOffset = 3000;  
    public bool runOnlyOnce = false;    
  
    void Update()  
    {  
        Renderer r = renderer;  
  
        if (widget == null)   
        {  
            widget = GetComponent<UIWidget>();  
        }  
  
        if (widget != null && widget.drawCall != null && r != null)  
        {  
            int targetQ = widget.drawCall.renderQueue + rendererQOffset;  
            if (targetQ > 0)  
            {  
                r.sharedMaterial.renderQueue = targetQ;   
            }  
        }  
        if (runOnlyOnce && Application.isPlaying)    
        {    
            this.enabled = false;    
        }    
    }  
}