unity中的几个坑
2016-03-01 15:56
483 查看
1、最近给UI添加粒子特效时,总是被UI遮挡
解决方法是:
因为粒子系统的渲染顺序列默认为3000,而NGUI的渲染顺序默认也是从3000开始,当有嵌套的panel时或者Depth更高的panel时,GUI的渲染顺序会高于3000,
解决办法是,
1.修改Ngui中的UIPanel脚本中的默认的RenderQueue,调整到3000以下,这样就不会遮挡住粒子特效了,当有的窗口需要显示在特效上面时,在检视面板中把该窗口的Renderer Q选项调整为Start At,值为3000以上,就可以解决,不过我的NGUI版本为3.1.6,所以可以直接调整。
2.使用另外一个摄像机,显示特效。但是在UI窗口相互切换时,不太好控制。
3.修改粒子特效的Shader中的RendererQueue值。
解决方法是:
因为粒子系统的渲染顺序列默认为3000,而NGUI的渲染顺序默认也是从3000开始,当有嵌套的panel时或者Depth更高的panel时,GUI的渲染顺序会高于3000,
解决办法是,
1.修改Ngui中的UIPanel脚本中的默认的RenderQueue,调整到3000以下,这样就不会遮挡住粒子特效了,当有的窗口需要显示在特效上面时,在检视面板中把该窗口的Renderer Q选项调整为Start At,值为3000以上,就可以解决,不过我的NGUI版本为3.1.6,所以可以直接调整。
2.使用另外一个摄像机,显示特效。但是在UI窗口相互切换时,不太好控制。
3.修改粒子特效的Shader中的RendererQueue值。
using UnityEngine; using System.Collections; public class renderqueue : MonoBehaviour { public UIWidget widget; private int renderQueue; // Use this for initialization void Start () { Do (); } // Update is called once per frame void Update () { Do (); } void Do() { Renderer renderer = GetComponent<Renderer> (); if(renderer != null && renderer .material != null) { if(widget != null && widget.drawCall != null) { renderQueue = widget.drawCall.renderQueue + 1000; } else { renderer.material.renderQueue = 4000; } } } }
相关文章推荐
- unity 切圆角矩形 --shader编程
- unity中的Transform类
- unity实现玻璃效果
- unity实现玻璃效果
- unity中的WWW通讯问题
- [Unity2d系列教程] 005.Unity如何使用外部触控插件FingerGuesture
- unity中事件分发系统 EventDispatcher
- Unity3D教程宝典之Shader篇 基本知识
- Unity3d获得android和ios设备的唯一标识
- Unity3D性能优化 - Update() 的使用
- 深入浅出聊Unity3D项目优化:从Draw Calls到GC
- Unity中,利用shader将NGUI图集大小缩小四倍
- Unity for iOS 调用UIDatePicker
- unity 外设输入
- 游戏引擎中三大及时光照渲染方法介绍(以unity3d为例)
- unity shaderlab Blend操作
- unity shaderlab Blend操作
- 【Unity Shaders】Mobile Shader Adjustment—— 什么是高效的Shader
- Unity物理系统
- 《Unity_API解析》 第五章 Mathf类