位置: 编程技术 - 正文

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

  • 增值税专用发票抵扣最新规定
  • 最惠国税是一种真正意义上的优惠关税
  • 出售技术所有权的会计分录
  • 公账的钱取现金
  • 汽车租赁服务开发票税率
  • 税控盘必须一直插着吗
  • 其他应收款包括应收利息吗
  • 房屋出租的成本怎么算
  • 通用机打发票能作废吗
  • 个人所得税该如何缴纳
  • 应收款确认坏账分录
  • 供应商提供财务报表
  • 发票的红字发票怎么开
  • 设备税款
  • 企业购买国债逆回购需要缴纳增值税吗
  • 保证金可以抵货款吗
  • 不是本公司员工
  • 增值税预征率记忆口诀
  • 医院开发票需要税号吗
  • 雇主责任险会计分录
  • 本年利润怎么算利润总额
  • 成本无发票如何处理
  • 外贸企业出口退税申报期限
  • 以前年度收入调整账务处理怎么做
  • 营养成分表的计算表
  • 待摊费用做账
  • 一般纳税人简易征收3%可以开专票吗
  • 苹果系统更新在哪里找
  • 如何修改鼠标指示灯颜色
  • mac只能读不能写
  • 房子按季度收取租金,怎么交房产税
  • 劳务公司的账务怎么做账
  • php字符串赋值
  • ConquerCam.exe进程的详细介绍 ConquerCam进程信息介绍
  • 科克伯什么意思
  • 取得抵债资产的方式
  • 赠送现金券是否违法
  • 本文虚构
  • 程序员才能看懂的梗
  • parted命令详解
  • 应收账款确认坏账损失
  • 个税网上申报流程视频
  • 去年亏损今年盈利
  • 金蝶kis的使用方法
  • phpcms缩略图不要自动裁剪的设置方法
  • 暂估入库多了怎么办
  • 纳税人识别号是不是税号
  • 自然人独资的有限责任公司交什么税
  • 固定资产原值增加当月计提折旧吗
  • sql server 2008怎么使用sql语句
  • 股权转让个人所得税怎么算
  • 单位开具技术维护发票
  • 高温补贴纳税
  • 施工审图费计入什么科目
  • 确认应付职工薪酬是什么意思
  • 专项应付款二级科目
  • 捐赠出去的固定资产需要继续折旧吗
  • 非营利医疗机构是什么单位
  • winxp系统怎么连接网络
  • 为快捷方式建立快捷方式
  • win10 rs5
  • 苹果电脑bim
  • win8如何删除登录密码
  • xp系统1
  • 怎么给ubuntu扩容
  • 如何设置电脑开机密码
  • windowsxp的设置在哪
  • windows7调节音量
  • win8系统怎么设置桌面
  • opengl context for format
  • 上传图片 js
  • python接入微信
  • 深入理解新发展理念,推进供给侧结构性改革
  • python文件管理系统难点总结
  • 安卓手机 监听功能
  • jquery示例
  • 使用应用程序的好处
  • 网上税务营业厅
  • 西藏拉萨工业园主要生产什么
  • 五险一金不满一年可以领失业金吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设