最新文章
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层级问题
最近在为UI添加粒子特效时,遇到了特效总是被UI遮挡的问题。下面为大家详细介绍该问题的产生原因及解决方法。
问题原因
粒子系统的默认渲染顺序为3000,而NGUI的渲染顺序默认也是从3000开始。当存在嵌套的panel或者Depth值更高的panel时,GUI的渲染顺序会高于3000,这就导致粒子特效被UI遮挡。
解决方法
方法一:修改Ngui中UIPanel脚本的默认RenderQueue
可以将UIPanel脚本中的默认RenderQueue调整到3000以下,这样UI就不会遮挡住粒子特效。若有的窗口需要显示在特效上面,可在检视面板中将该窗口的Renderer Q选项调整为“Start At”,并将值设为3000以上。需要注意的是,此方法在我的NGUI版本(3.1.6)中可以直接进行调整。
方法二:使用另外一个摄像机显示特效
通过额外使用一个摄像机专门来显示特效,理论上可以解决层级问题。然而,在UI窗口相互切换时,这种方法不太容易控制,可能会出现特效显示异常等情况。
方法三:修改粒子特效的Shader中的RendererQueue值
直接修改粒子特效所使用的Shader中的RendererQueue值,使其渲染顺序高于UI,从而避免被UI遮挡。