位置: 编程技术 - 正文

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连接)

  • 固定收益凭证是固定的吗
  • 纳税申报方式如何更改
  • 福利性收入属于什么分配
  • 转账显示未认证
  • 现金抵用券购买怎么用
  • 对方承担税差该如何入账?
  • 航天金穗服务费抵扣
  • 以前没有计提增值税吗
  • 不能抵扣的进项发票怎么做分录
  • 会计档案的概念和内容
  • 加油票可以抵扣几个点的增值税
  • 公司未分配利润太大,怎么处理好
  • 怎么计提企业所得税
  • 证券公司期货业务管理办法
  • 如何判断发票是否重复
  • 如何理解结算方式以及结算方式有哪些?
  • 开业庆典礼仪费计入什么科目?
  • 零申报的企业年末的利润表可以为零吗?
  • 破产清算应付账款
  • 打方向咯噔一声已解决
  • 详解php比较操作过程
  • 入库的原材料单价怎么求
  • 居民企业应纳税额
  • 新公司成立股份比例
  • 苹果客服人工24小时
  • PHP:diskfreespace()的用法_Filesystem函数
  • PHP:mcrypt_module_close()的用法_Mcrypt函数
  • php 验证码
  • php模板引擎语法
  • php2008
  • 社保退工伤保险怎样做分录
  • Yii1.1中通过Sql查询进行的分页操作方法
  • 残保金政策建议
  • 企业持有待售的固定资产,应当对其预计
  • flutter项目怎么运行
  • 银行同业利率
  • 转出未交增值税会计处理
  • DEDECMSV5.6将软件下载次数直接生成静态
  • 小规模缴纳印花税吗怎么做账
  • 预提费用汇缴时间怎么算
  • 交强险怎么报警
  • 编制记账凭证的步骤
  • 国有控股企业和国有参股企业的区别
  • 减值准备减少记哪方
  • 预提房租会计分录怎么填
  • 可抵扣进项税额的六种类型
  • 公司一般户需要纳税吗
  • 行政事业单位福利费提取比例
  • 主营业务收入的t型账户怎么写
  • 房屋租赁费交什么税
  • 进项税额被转出怎么做账
  • 明年发票可以入到今年有什么惩罚
  • mysql -u -p -s
  • mysql语句的注释符号
  • 错误的英文
  • 海量数据存储和查询
  • 注册表已被管理员禁用怎么处理
  • services.exe修改注册表
  • 扩展卷不相邻怎么办
  • windows7 ie
  • 如何使用一键启动
  • win10注册表详解
  • win7系统如何查找文件
  • win8应用商店废了
  • win8如何关闭杀毒软件
  • 猫的所有视频
  • 3ds怎么用3ds格式
  • jsclass选择器
  • cmd常用命令详解
  • 经典都有什么
  • 仿京东首页html5
  • vue vue cli
  • unity ulua
  • python 获取uuid
  • 国家税务局天津市税务总局官网
  • 中国税务干部
  • 镇江市税务局官网
  • 地税干部
  • 摩托车的消费税计税依据
  • 宁波购房契税退税条件
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设