对于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;
}
}
}