位置: 编程技术 - 正文

unity3d完美处理NGUI和特效的显示问题(unity3d quaternion)

编辑:rootadmin

推荐整理分享unity3d完美处理NGUI和特效的显示问题(unity3d quaternion),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:unity3ds,unity 3d ui,unity3d操作,unity3d documentation,unity3d完整项目,unity3d操作,unity怎么后处理,unity 后期处理,内容如对您有帮助,希望把文章链接给更多的朋友!

NGUI相当不错,但是有一点比较纠结的就是面板上显示特效的时候,你会发现要么盖住特效,要么面板永远无法盖住特效。很多人说改renderqueue,然后就能显示了,然后下面一堆楼主给力。。。。呵呵。

先从原理上解释吧,NGUI是通过调整renderqueue来显示不同层,然后它的shader是不写入z&#;的,然后特效刚好也是不写入z&#;的,所以你要控制特效和UI的关系,确实只能通过renderqueue.但是如果你只是单纯让renderqueue非常大,那么特效就会永远在面板之上。

如果你想要两个面板夹住特效,那么就需要看NGUI源代码了。

这里希望大家自己去看一下,我直接贴上修改方案:

unity3d完美处理NGUI和特效的显示问题(unity3d quaternion)

if (this.widgetInFrontOfMe != null && this.widgetInFrontOfMe.drawCall != null) { int rq = this.widgetInFrontOfMe.drawCall.renderQueue &#; 1; Debug.Log(rq); foreach (Material material in m_renderer.materials) { if(material.renderQueue != rq) { material.renderQueue = rq; } } }

首先这段代码就是将特效的renderqueu调整成你想要放置的物体的前面。然后你如果在Update()或者LateUpdate()中执行这段代码,你会发现它工作的不错,就是偶尔会闪一下,这是因为这段代码先更新了,然后NGUI才更新,所以导致滞后一帧。对于我这种完美主义者来说,这是不能接受的。所以我修改了UIPanel的源代码,然里面全部更新完毕后,再去调用这个函数。哈哈,一切都非常完美。

大致代码如下:

List<UISortBehavior> container = new List<UISortBehavior>(); public void addUISort(UISortBehavior uiSort) { if(container.Contains(uiSort)) { return; } container.Add (uiSort); } public void removeUISort(UISortBehavior uiSort) { container.Remove (uiSort); } public void updateUISort() { for(int i = 0; i < container.Count; i&#;&#;) { container[i].UpdateSortUI(); } } void LateUpdate () { if (mUpdateFrame != Time.frameCount) { mUpdateFrame = Time.frameCount; // Update each panel in order for (int i = 0; i < list.size; &#;&#;i) list[i].UpdateSelf(); int rq = ; // Update all draw calls, making them draw in the right order for (int i = 0; i < list.size; &#;&#;i) { UIPanel p = list.buffer[i]; if (p.renderQueue == RenderQueue.Automatic) { p.startingRenderQueue = rq; p.UpdateDrawCalls(); //rq &#;= p.drawCalls.size; rq &#;= p.drawCalls.size * 2; } else if (p.renderQueue == RenderQueue.StartAt) { p.UpdateDrawCalls(); if (p.drawCalls.size != 0) rq = Mathf.Max(rq, p.startingRenderQueue &#; p.drawCalls.size * 2); //rq = Mathf.Max(rq, p.startingRenderQueue &#; p.drawCalls.size); } else // Explicit { p.UpdateDrawCalls(); if (p.drawCalls.size != 0) rq = Mathf.Max(rq, p.startingRenderQueue &#; 2); //rq = Mathf.Max(rq, p.startingRenderQueue &#; 1); } p.updateUISort(); } } } /// <summary> /// Update the panel, all of its widgets and draw calls. /// </summary> void UpdateSelf () { mUpdateTime = RealTime.time; UpdateTransformMatrix(); UpdateLayers(); UpdateWidgets(); if (mRebuild) { mRebuild = false; FillAllDrawCalls(); } else { for (int i = 0; i < drawCalls.size; ) { UIDrawCall dc = drawCalls.buffer[i]; if (dc.isDirty && !FillDrawCall(dc)) { UIDrawCall.Destroy(dc); drawCalls.RemoveAt(i); continue; } &#;&#;i; } } }

unity3d接入GameCenter成就显示有问题 使用unity3d提供的Social.ShowAchievementsUI显示成就,发现还是显示的排行界面,原来重启下就好了!!!参考来自:

Unity3d HDR和Bloom效果(高动态范围图像和泛光) 文章开始先放两组效果,文章结尾再放两组效果本文测试场景资源来自浅墨大神,shader效果为本文效果HDR人们有限的视觉系统,只支持.7百万的颜色,

创建一个扇形Mesh usingUnityEngine;usingSystem.Collections;/*==============================================================================*功能描述:测试Mesh创建*创建者:cjunhong*QQ:*创建日

标签: unity3d quaternion

本文链接地址:https://www.jiuchutong.com/biancheng/382569.html 转载请保留说明!

上一篇:Unity开发之接入android uc九游sdk(三)(unity接收数据)

下一篇:unity3d接入GameCenter成就显示有问题(unity连接)

  • 营业额超500万会罚款吗
  • 政府补助是否可以抵扣税
  • 基本税种有哪些税种
  • 长期股权投资的账面价值怎么计算
  • 产品入库实际成本是什么凭证
  • 商场扣点收入如何纳税
  • 资金账簿印花税减半征收是从什么时候开始的
  • 外借资质收取的税费会计处理
  • 进出口企业如何防范汇率风险
  • 一般销售商品业务
  • 个税手续费返还会计分录
  • 建筑企业差额征税账务处理
  • 317房地产政策解读
  • 增值税发票价税合计是什么意思
  • 三方协议是先签先干活
  • 印花税核定表申请
  • 结汇汇兑损益账务处理
  • 金蝶银行日记账取消勾对
  • 装饰公司发票怎么
  • 公益性捐赠所得税处理
  • 以资抵债方式取得的无形资产如何记账?
  • 一般纳税人转让固定资产增值税税率
  • 已经上传的红字怎么修改
  • 车船税收费标准2023年多少钱
  • 汇算清缴是哪个报表
  • 电脑dwm.exe是什么
  • 科技财政支出的意义
  • 门面出租赚钱吗
  • 一般纳税人简易征收3%可以开专票吗
  • 生产成本结转后有余额吗
  • react modal
  • 深度解析冯德伦最后为什么选了舒淇
  • php生成zip压缩包
  • 投资性房地产在资产负债表哪个科目
  • 有限合伙企业的执行事务合伙人
  • js array.fill
  • 为什么结转材料成本差异
  • 债务豁免涉税
  • sql server2005一个表中可以设置
  • 差旅费报销原因
  • 有限合伙企业分红原则
  • 投资收益属于什么科目,借贷方向
  • 什么是内部报酬吗
  • 劳动局仲裁花钱吗
  • 融资租赁的固定资产可以一次性扣除吗
  • 转卖增值税犯罪吗
  • 颁给供应商的奖项
  • 技术服务收入如何纳税
  • 股权变更产生的税费
  • 支付劳务费是劳务所在地吗
  • 报销需要发票吗?
  • 实收资本应补缴哪些税
  • 进项税的发票
  • 如何计提当期费用成本
  • 最新商业会计科目做账
  • 银行凭证怎么记账
  • 金融企业借款费用扣除比例
  • access数据类型是什么
  • mysql5.7免安装版配置
  • 全民用车app下载
  • win10 9月更新 问题
  • linux怎么修改
  • linux安装linux
  • mac os如何安装软件
  • windows如何删除本地用户
  • windows电脑图片传到iphone
  • win7系统出现问题怎么修复
  • windos8怎么样
  • javascript动画教程
  • opengl使用教程
  • python set集合取值
  • unity监视器
  • shell错误日志输出
  • jq设置下拉框的值
  • python编写一个模块
  • 增值税开票系统如何添加开票人
  • 湖北国税办税人是谁
  • 河北省国家税务局长简介
  • 登录上海电子税务局单位社保查询不到当月未交的
  • 交医保显示已申报怎么办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设