NGUI 粒子显示在上级
http://bbs.taikr.com/thread-2272-1-1.html
-- : 48人阅读 评论() 收藏 举报
【Unity3D】【NGUI】3.0+版本,粒子在UI后面显示
分类: Unity3D NGUI2013-- : 1606人阅读 评论() 收藏 举报
unity3dngui脚本技巧
NGUI讨论群:
方法一:
提供一个脚本。放在粒子上。
调整相应的renderQueue使粒子显示在UI前面。如果有些UI需要显示在粒子前面,记得修改相应UI的renderQueue。 [csharp] view plaincopy
using UnityEngine;
using System.Collections; [ExecuteInEditMode]
public class SZUIRenderQueue : MonoBehaviour { public int renderQueue = ;
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 = ;
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 > )
{
r.sharedMaterial.renderQueue = targetQ;
}
}
if (runOnlyOnce && Application.isPlaying)
{
this.enabled = false;
}
}
}
最近给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值。
NGUI 粒子显示在上级的更多相关文章
- NGUI无法显示
早上起来发现 ,NGUI无法显示,后来发现是场景Camera的 depth =0 : 要设置depth=-1. 原来相机之间也有渲染层级
- NGUI中显示DrawCall详细信息
[NGUI显示DrawCall详细信息] UIDrawCall中有个宏,SHOW_HIDDEN_OBJECTS,默认为关闭状态.将此宏打开,NGUI即会将DrawCall对象显示在Hierarchy中 ...
- Unity NGUI 粒子的排序
Unity NGUI系统中是没有对粒子进行排序的,如: 怎么解决这个问题呢? 思路是把粒子的渲染层级,相对于UI组件的层级进行一个偏移. 解决后的效果如下: 代码如下: using System.Co ...
- Cocos2D v3.4.9粒子效果不能显示的原因分析及解决办法
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在游戏App中为了衬托气氛我们往往使用一些特殊的图形效果,粒子 ...
- 【Unity游戏开发】浅谈 NGUI 中的 UIRoot、UIPanel、UICamera 组件
简介 马三最近换到了一家新的公司撸码,新的公司 UI 部分采用的是 NGUI 插件,而之前的公司用的一直是 Unity 自带的 UGUI,因此马三利用业余时间学习了一下 NGUI 插件的使用,并把知识 ...
- [转]结合轮廓显示,实现完整的框选目标(附Demo代码)
原地址:http://www.cnblogs.com/88999660/articles/2887078.html 几次看见有人问框选物体的做法,之前斑竹也介绍过,用画的框生成的视椎,用经典图形学的视 ...
- unity3d结合轮廓显示,实现完整的框选目标(附Demo代码)
原地址:http://dong2008hong.blog.163.com/blog/static/469688272013111554511948/ 在unity里实现,其实很简单,因为有两个前提:1 ...
- 使用CAEmitterLayer产生粒子效果
ViewController.m #import "ViewController.h" @implementation ViewController - (void)viewDid ...
- iOS CAEmitterLayer 实现粒子发射动画效果
iOS CAEmitterLayer 实现粒子发射动画效果 效果图 代码已上传 GitHub:https://github.com/Silence-GitHub/CoreAnimationDemo 动 ...
随机推荐
- Java学习笔记(十九)——Java 日志记录 AND log4j
[前面的话] 学习的进度应该稍微在快一点. Java日志到了必须学习怎么使用的时候了,因为在项目中要进行使用.基础性文章,选择性阅读. [结构] java日志对调试,记录运行,问题定位都起到了很重要的 ...
- jQuery问题:$XXX is not a function
用火狐浏览器打开,js代码一段不执行,F12以后看见下面的错误: 网上查看说是jQuery文件引用的问题,把jQuery.js引入语句修改了一下,果然没有错了. 我原来的引用语句是:<scrip ...
- Object C学习笔记19-枚举
一. 枚举类型 枚举类型是一个基本类型,不能再分为为任何其他的类型.在一般的编程语言中都有枚举(enum)这种数据结构类型.枚举类型主要用于将一个变量限定在特定的范围内.比如一周有七天,那么一周的值就 ...
- xsd、wsdl生成C#类的命令行工具使用方法
1.xsd生成C#类命令 示例:xsd <xsd文件路径> /c /o:<生成CS文件目录> <其他参数> 参数说明: /c 生成为cs文件,/d 生成DataSe ...
- asp.net网站安全常见问题与防范
1:SQL 注入 2:XSS 3:CSRF 4:文件上传 1:SQL 注入 引起原因: 其实现在很多网站中都存在这种问题.就是程序中直接进行SQL语句拼接.可能有些读者不太明白. 下面通过一个登录时对 ...
- SpringMVC使用中遇到的问题总结
使用的IDE工具是MyEclipse2014, spring版本为3.1.1 在使用Spring MVC时需要修改web.xml配置文件,web.xml默认放在WEB-INF目录下. 1.web.xm ...
- u11-nav01
<header id="masthead" class="masthead" role="banner"> <nav cl ...
- 大概了解了flexbox
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- Java算法-符号&
&与运算符 与运算符用符号“&”表示,其使用规律如下:两个操作数中位都为1,结果才为1,否则结果为0 例如下面的程序段. public class data13 { public s ...
- 【poj1716】 Integer Intervals
http://poj.org/problem?id=1716 (题目链接) 题意 给出n个区间,要求取出最少数量的不同的自然数,使每个区间中至少包含2个取出的数. Solution 差分约束. 运用前 ...