ngui 和模型遮挡关系

2015年01月20日 10:36 0 点赞 0 评论 更新于 2025-11-21 14:54

最近在为 UI 添加粒子特效时,发现粒子特效总是被 UI 遮挡。下面详细分析该问题产生的原因,并给出相应的解决方法。

问题原因

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

解决方法

方法一:修改 NGUI 中 UIPanel 脚本的默认渲染队列

可以修改 NGUI 里 UIPanel 脚本中的默认 RenderQueue,将其调整到 3000 以下,这样粒子特效就不会被 UI 遮挡。若某些窗口需要显示在特效之上,可在检视面板中将该窗口的 Renderer Q 选项设置为 Start At,并将值设为 3000 以上。需要注意的是,此方法在我使用的 NGUI 3.1.6 版本中可直接进行调整。

方法二:使用额外摄像机显示特效

可以使用另一个摄像机专门来显示特效。不过这种方法存在一定的局限性,在 UI 窗口相互切换时,特效的显示控制会比较困难。

方法三:修改粒子特效 Shader 中的渲染队列值

直接修改粒子特效的 Shader 中的 RendererQueue 值,以此来调整粒子特效的渲染顺序,避免被 UI 遮挡。