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面板中修改了之后立即就能生效了。
- 上一篇: 一个定时器
- 下一篇: NGUI:自己做一个popuplist