Unity的NGUI的粒子在UI后面显示
在Unity开发中,有时我们需要让NGUI的粒子在UI后面显示。下面为大家介绍两种可行的方法。
方法一:使用脚本调整渲染队列
这种方法通过编写一个脚本并挂载到粒子对象上,调整其渲染队列(renderQueue),从而实现粒子在UI后面显示的效果。如果某些UI需要显示在粒子前面,还需要相应地修改这些UI的渲染队列。
以下是具体的脚本代码:
using UnityEngine;
using System.Collections;
[ExecuteInEditMode]
public class SZUIRenderQueue : MonoBehaviour
{
// 定义渲染队列的值,默认为3000
public int renderQueue = 3000;
// 标记是否只运行一次
public bool runOnlyOnce = false;
void Start()
{
// 在Start方法中调用Update方法
Update();
}
void Update()
{
// 检查渲染器和材质是否存在
if (renderer != null && renderer.sharedMaterial != null)
{
// 设置材质的渲染队列
renderer.sharedMaterial.renderQueue = renderQueue;
}
// 如果runOnlyOnce为true且游戏正在运行,则禁用该脚本
if (runOnlyOnce && Application.isPlaying)
{
this.enabled = false;
}
}
}
使用步骤:
- 将上述脚本保存为一个
.cs文件,例如SZUIRenderQueue.cs。 - 将该脚本挂载到需要调整渲染顺序的粒子对象上。
- 根据实际需求调整
renderQueue的值,值越大越靠后渲染。 - 如果有UI需要显示在粒子前面,修改这些UI的渲染队列值,使其大于粒子的渲染队列值。
方法二:手动修改Shader的渲染队列
这种方法需要从官方下载粒子的Shader,然后手动在Shader代码中修改 RenderQueue 的值。
具体步骤:
- 从Unity官方资源库或相关渠道下载粒子所使用的Shader。
- 使用文本编辑器打开Shader文件。
- 在Shader代码中找到
SubShader标签下的Tags部分,通常会有RenderType和RenderQueue的设置。 - 修改
RenderQueue的值,使其小于UI的渲染队列值,以确保粒子在UI后面显示。例如:SubShader { Tags { "RenderType"="Transparent" "RenderQueue"="2000" } // 其他Shader代码... }通过以上两种方法,你可以根据实际情况选择合适的方式,实现Unity的NGUI粒子在UI后面显示的效果。