最新文章
Cocos2d-x游戏开发实例详解7:对象释放时机
03-25 13:59
Cocos2d-x游戏开发实例详解6:自动释放池
03-25 13:55
Cocos2d-x游戏开发实例详解5:神奇的自动释放
03-25 13:49
Cocos2d-x游戏开发实例详解4:游戏主循环
03-25 13:44
Cocos2d-x游戏开发实例详解3:无限滚动地图
03-25 13:37
Cocos2d-x游戏开发实例详解2:开始菜单续
03-25 13:32
如何处理在NGUI界面上播放的3D粒子特效
最近在给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遮挡。