位置: 编程技术 - 正文

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

  • 公司名称变更在哪个网站
  • 冲减以前年度多计的管理费用分录
  • 小规模纳税人能开9个点的发票吗
  • 全资子公司的利润有多少
  • 购入固定资产会影响营业利润吗
  • 应付账款周转率分析
  • 无使用价值的存货属于资产吗
  • 普通发票开票人为管理员是否可以报销?
  • 高档化妆品消费税的计算公式
  • 机票保险可以报销入账吗
  • 转让地下建筑物交土地增值税吗
  • 给客户退差价怎么说
  • 企业长期股权投资
  • 远程清卡失败怎么办
  • 一季度所得税费用怎么算
  • 股权收购特殊性税务处理案例
  • 软件开发过程中必须伴有质量保证活动
  • 员工因违反公司规章制度被辞退有补偿吗
  • 不能抵扣的费用
  • 收入成本配比原则
  • 如何把文档转换成二维码
  • 专项维修基金会产生利息吗
  • help是什么文件夹可以删除吗
  • 建筑业主营业务收入二级科目有哪些
  • 年终奖发放形式 更改 税务局
  • 工程复工程序是什么
  • 企业在建工程领用自产的应税消费品
  • 石炭纪的树有多高
  • 结转本月完工产品成本120000元
  • eslint vue配置
  • 企业购进的商品是什么
  • 车道线检测视频素材
  • 销售费用的主要类型有哪些
  • 应收账款坏账准备计算表
  • 年度财务报表分为哪几类
  • 装货费用
  • 设备调试费是什么税
  • 预收账款什么时候确认增值税
  • 购入已提足折旧的固定资产账务处理
  • 合并会计报表编制实例
  • 企业季度是如何对账
  • 社保工伤保险可以退吗
  • 企业的主要经营指标有哪些
  • mysql5.5远程连接
  • 无偿调拨资产怎么提折旧
  • Transactional replication(事务复制)详解之如何跳过一个事务
  • mysql查询重复的全部删除
  • 建筑行业会计做账流程及会计分录
  • 增值税发票日用品开票明细
  • 预缴增值税需要提供什么资料
  • 税收返还会计处理方法
  • 开具红字专用发票理由
  • 高新技术企业外债便利化额度试点重庆
  • 材料合理损耗计入入账价值吗
  • 固定资产拆除怎么处理
  • 电费已支付未充值
  • 红字发票的开具需要把开始的发票取回作废吗?
  • 收据能作为抵减成本吗
  • 旅游服务住宿费公司不给报销
  • 如何判断应当预见
  • Windows Server 2016技术第三预览版10537英文版ISO镜像下载泄露
  • windows延缓写入失败怎么修复
  • win7系统浏览器怎么设置
  • MS DTC 事务管理器无法启动的解决方案
  • 系统问题怎么处理
  • 360 sesvc.exe
  • sdstat.exe - sdstat是什么进程 有什么用
  • linux arp -s
  • windows7触摸
  • win8.1 无法连接到此网络
  • win7网页有错误如何修复?
  • 安卓开发框架mvvm
  • Python中利用不同Excel表的列匹配
  • pycharm打开文件怎么运行
  • javascript运算
  • javascript教程 csdn
  • 对于初学者的鼓励
  • 国家税务总局的官网
  • 江苏省官网
  • 转卖车位土地增值税税率
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设