如何处理在NGUI界面上播放的3D粒子特效

2015年01月12日 15:46 0 点赞 0 评论 更新于 2025-11-21 14:06

最近在给UI添加粒子特效时,遇到了粒子特效总是被UI遮挡的问题。下面为大家详细介绍几种解决该问题的方法。

问题根源

粒子系统的渲染顺序默认值为3000,而NGUI的渲染顺序默认也是从3000开始。当存在嵌套的Panel或者Depth值更高的Panel时,GUI的渲染顺序就会高于3000,从而导致粒子特效被UI遮挡。

解决方法

方法一:修改Ngui中UIPanel脚本的默认RenderQueue

可以将UIPanel脚本中的默认RenderQueue调整到3000以下,这样NGUI的渲染顺序就会低于粒子系统,粒子特效就不会被遮挡。当某些窗口需要显示在特效上面时,在检视面板中将该窗口的Renderer Q选项调整为“Start At”,并把值设置为3000以上。需要注意的是,此方法在我的NGUI版本(3.1.6)中可以直接进行调整,不同版本可能会存在差异。

方法二:使用另外一个摄像机显示特效

通过额外添加一个摄像机专门用于显示粒子特效,理论上可以解决特效被遮挡的问题。不过,这种方法在UI窗口相互切换时,特效的显示和控制会变得比较复杂,不太容易进行精准控制。

方法三:修改粒子特效的Shader中的RendererQueue值

直接修改粒子特效所使用的Shader中的RendererQueue值,使其渲染顺序高于NGUI的渲染顺序,也能够避免粒子特效被UI遮挡。