NGUI与粒子遮挡解决方法
2015-05-25 23:32
323 查看
转载自:http://www.taidous.com/thread-2272-1-1.html
代码:
using UnityEngine;
public class SetRenderQueue : MonoBehaviour
{
public int renderQueue = 3000;
Material mMat;
void Start ()
{
Renderer ren = renderer;
if (ren == null)
{
ParticleSystem sys = GetComponent<ParticleSystem>();
if (sys != null) ren = sys.renderer;
}
if (ren != null)
{
mMat = new Material(ren.sharedMaterial);
mMat.renderQueue = renderQueue;
ren.material = mMat;
}
}
void OnDestroy () { if (mMat != null) Destroy(mMat); }
}
或者
using UnityEngine;
public class SetRenderQueue : MonoBehaviour
{
public int renderQueue = 3000;
Material mMat;
void Start ()
{
Renderer ren = renderer;
if (ren == null)
{
ParticleSystem sys = GetComponent<ParticleSystem>();
if (sys != null) ren = sys.renderer;
}
if (ren != null)
{
mMat = new Material(ren.sharedMaterial);
mMat.renderQueue = renderQueue;
ren.material = mMat;
}
}
void OnDestroy () { if (mMat != null) Destroy(mMat); }
}
将脚本挂在粒子上
最近给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值。 |
using UnityEngine;
public class SetRenderQueue : MonoBehaviour
{
public int renderQueue = 3000;
Material mMat;
void Start ()
{
Renderer ren = renderer;
if (ren == null)
{
ParticleSystem sys = GetComponent<ParticleSystem>();
if (sys != null) ren = sys.renderer;
}
if (ren != null)
{
mMat = new Material(ren.sharedMaterial);
mMat.renderQueue = renderQueue;
ren.material = mMat;
}
}
void OnDestroy () { if (mMat != null) Destroy(mMat); }
}
或者
using UnityEngine;
public class SetRenderQueue : MonoBehaviour
{
public int renderQueue = 3000;
Material mMat;
void Start ()
{
Renderer ren = renderer;
if (ren == null)
{
ParticleSystem sys = GetComponent<ParticleSystem>();
if (sys != null) ren = sys.renderer;
}
if (ren != null)
{
mMat = new Material(ren.sharedMaterial);
mMat.renderQueue = renderQueue;
ren.material = mMat;
}
}
void OnDestroy () { if (mMat != null) Destroy(mMat); }
}
将脚本挂在粒子上
相关文章推荐
- 解决粒子特效被NGUI遮挡的问题。
- 解决粒子特效被NGUI遮挡的问题
- 解决NGUI与粒子系统的遮挡问题
- 解决粒子特效被NGUI遮挡的问题
- ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
- android开发之edittext弹出输入框遮挡住文字。解决方法
- 关于DIV被SELECT遮挡问题的解决方法
- 嵌入的flash遮挡弹出div层解决方法[转]
- AjaxControlToolkit中的CalendarExtender被遮挡及日期格式本地化解决方法
- Android WebView 软键盘遮挡输入框问题的解决方法
- 解决FLASH与DIV覆盖遮挡以及FF无法显示innerHTML等元素的方法
- Unity 粒子特效被NGUI遮挡的问题
- 解决ngui 粒子 层级显示问题
- iphonex 底部遮挡返回键 解决方法
- 绝对定位元素被遮挡的解决方法
- 通用方法解决UITextFiled输入的时候,键盘遮挡问题
- div被选择框select遮挡住的5种解决方法
- surfaceview遮挡了上面的控件显示的解决方法
- Android虚拟导航栏遮挡底部的输入框的解决方法
- react在安卓中输入框被手机键盘遮挡问题的解决方法