【Unity3D】【NGUI】3.0+版本,粒子在UI后面显示

NGUI讨论群:333417608

方法一:

提供一个脚本。放在粒子上。

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


using UnityEngine;
using System.Collections;

[ExecuteInEditMode]
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;

[ExecuteInEditMode]
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;  
		}  
    }
}


你可能感兴趣的:(脚本,技巧,unity3d,NGUI)