【Unity3D】【NGUI】3.0+版本,粒子在UI后面显示(RenderQueue 渲染队列先后顺序)
2015-08-12 11:58
477 查看
此文章可以解决以下相关问题:
解决粒子特效被NGUI遮挡的问题
unity 2d 和 NGUI layer
[NGUI]unity 2d native sprite和NGUI一起使用,NGUI始终被Sprite覆盖。。。求高手解决啊
------------------------
方法3 比较好用哦!
UIWidget 是指要被放置特效的 的NGUI 元素-------------
高能注意:
有两种修改renderQueue的方法,结果是不同的.
Renderer render;
render.material;
render.sharedMaterial;
第一种不改变 资源文件. 不会影响到其他 公用一个资源的表现.(据说有存在内存泄漏)
第二种 在Editor模式下(游戏模式下估计也会吧?)会修改资源文件,并且所有使用此资源的对象都会受影响.
#if UNITY_EDITOR
return
render.material;
#else
return
render.sharedMaterial;
#endif
用这段代码来保证不对本地资源修改. 在游戏时则共享材质修改.
具体看: http://blog.csdn.net/z9895512/article/details/47610427
------------
方法一:
提供一个脚本。放在粒子上。
调整相应的renderQueue使粒子显示在UI前面。如果有些UI需要显示在粒子前面,记得修改相应UI的renderQueue。
[csharp] view
plaincopy
using UnityEngine;
using System.Collections;
[ExecuteInEditMode]
public class SZUIRenderQueue : MonoBehaviour {
public int renderQueue = 3000;
public bool runOnlyOnce = false;
void Start()
{
Update();
}
void Update()
{
if (renderer != null && renderer.sharedMaterial != null)
{
renderer.sharedMaterial.renderQueue = renderQueue;
}
if (runOnlyOnce && Application.isPlaying)
{
this.enabled = false;
}
}
}
方法二:
去官方下载粒子的Shader,之后手动在Shader里面修改RenderQueue。
http://unity3d.com/unity/download/archive
(Built-in shaders)
方法三:
(感谢穆斯提供脚本)
[csharp] view
plaincopy
using UnityEngine;
[ExecuteInEditMode]
class SZUIRenderQueueToWidget : MonoBehaviour
{
public UIWidget widget;
public int rendererQOffset = 3000;
public bool runOnlyOnce = false;
void Update()
{
Renderer r = renderer;
if (widget == null)
{
widget = GetComponent<UIWidget>();
}
if (widget != null && widget.drawCall != null && r != null)
{
int targetQ = widget.drawCall.renderQueue + rendererQOffset;
if (targetQ > 0)
{
r.sharedMaterial.renderQueue = targetQ;
}
}
if (runOnlyOnce && Application.isPlaying)
{
this.enabled = false;
}
}
}
相关文章推荐
- Unity笔记 Graphics( 光 shader camera mesh )
- unity初写游戏(一)2D界面GUIText
- Unity shader学习资料
- 使用Unity3D的50个技巧:Unity3D最佳实践(上)
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(49)-工作流设计-我的申请
- Unity3D_WebPlayer_PHP连接MySQL数据库_3_php登录和读取所有数据
- Unity3D_WebPlayer_PHP连接MySQL数据库_2_php注册逻辑
- Unity3D_WebPlayer_PHP连接MySQL数据库_1_php服务器配置
- Unity3D--EventBase
- Unity3D 连接MySQL数据库笔记3-SQL建表
- Unity3D 连接MySQL数据库笔记1-安装MySQL数据库
- Unity3D 连接MySQL数据库笔记2-所需要的DLL
- Unity3D碰撞后去掉相互之间的反弹力
- SuperSocket框架学习笔记3-构建Unity3D__WebSocket4Net客户端程序
- Unity3D音效问题
- Unity2D学习笔记(二):sprite动画编辑
- Unity (五)
- unityshader固定管线的一些概念理解
- Unity入门游戏太空大战
- Unity中的行为树插件 Behavior Designer