让不可见的UGUI组件,只响应Raycast但是不参与GPU绘制的方法,有效降低OverDraw的产生
2016-12-22 23:37
721 查看
张博士他们搞的那个UWA公司在对unity的性能优化方面确实是6的不行呀,分享了好多很棒的方法呀。
原文地址,主要分享了2个降低ugui填充率的方法:http://blog.uwa4d.com/archives/fillrate.html
我们一般会做一些不可见的ugui组件,用来屏蔽在它后面的ui窗口的操作,但是这样的窗口其实也是会参与绘制的,这样的窗口多了以后,就会导致Overdraw的上升,降低效率,这里有一个十分巧妙的方法,可以让这个不可见的控件压根不参与绘制!让它彻底的消失,但是还能够阻挡后面ui的操作。
我们增加这样一个控件出来就可以了,代码:
然后我们来看看对比图!
这是我们打算用来做测试的ui
这是旧的遮挡方法:
这里我们用image组件来显示一张透明的图片,阻挡按钮的点击,我们来看看OverDraw
看到那一大块正方形了吗,这就是这块遮挡区域的绘制像素。
然后我们再来试试新的组件:
OverDraw:
那块矩形的像素区域消失了!现在不管我们加多少用来做全屏阻挡的组件,都不用担心它会参与ui的绘制了!当然如果你的阻挡区域是带颜色的,那这个小方法就不适合你了,我们需要根据项目的实际情况来进行选用。
文章里还有一个用顶点数来换填充率的方法,Polygon Mode Sprites,大家有兴趣的话也可以看看,不过希望unity自己能赶紧把这个特性搞进ugui里呀,就省大事了~
再次感叹一下,高手在民间呀,群众的力量是很强大的!
原文地址,主要分享了2个降低ugui填充率的方法:http://blog.uwa4d.com/archives/fillrate.html
我们一般会做一些不可见的ugui组件,用来屏蔽在它后面的ui窗口的操作,但是这样的窗口其实也是会参与绘制的,这样的窗口多了以后,就会导致Overdraw的上升,降低效率,这里有一个十分巧妙的方法,可以让这个不可见的控件压根不参与绘制!让它彻底的消失,但是还能够阻挡后面ui的操作。
我们增加这样一个控件出来就可以了,代码:
using UnityEngine; using System.Collections; namespace UnityEngine.UI { public class Empty4Raycast : MaskableGraphic { protected Empty4Raycast() { useLegacyMeshGeneration = false; } protected override void OnPopulateMesh(VertexHelper toFill) { toFill.Clear(); } } }
然后我们来看看对比图!
这是我们打算用来做测试的ui
这是旧的遮挡方法:
这里我们用image组件来显示一张透明的图片,阻挡按钮的点击,我们来看看OverDraw
看到那一大块正方形了吗,这就是这块遮挡区域的绘制像素。
然后我们再来试试新的组件:
OverDraw:
那块矩形的像素区域消失了!现在不管我们加多少用来做全屏阻挡的组件,都不用担心它会参与ui的绘制了!当然如果你的阻挡区域是带颜色的,那这个小方法就不适合你了,我们需要根据项目的实际情况来进行选用。
文章里还有一个用顶点数来换填充率的方法,Polygon Mode Sprites,大家有兴趣的话也可以看看,不过希望unity自己能赶紧把这个特性搞进ugui里呀,就省大事了~
再次感叹一下,高手在民间呀,群众的力量是很强大的!
相关文章推荐
- iis服务没有及时响应启动或控制请求错误产生原因及解决方法
- 有效参与会议的十种方法
- ios之算法-对随机数百分百产生有效不重复处理方法
- 手机移动端web 禁止手机返回功能的最好方法,虽然很变态,但是很有效.
- 使用hibernate运行产生的红字解决方法,虽然不影响,但是看着不爽
- android View的绘制过程和获取组件高宽值的三种方法
- SharePoint:在计算字段中使用Today, Me之类的函数的方法,有点搞笑,但是有效
- jQuery中scrollTop获取匹配元素相对滚动条顶部的偏移(此方法对可见和隐藏元素均有效。)
- java 用组件绘制程序界面方法小结
- SuperMap IObjects C++组件学习笔记(三) - 利用组件绘制的回调方法控制自定义绘制
- 某编程论坛看到的降低网络游戏CPU占用率的方法。但是看不明白如何使用。求教。
- cell 能够响应 select,但是选中后的颜色又不发生改变的方法
- loadrunner测试ajax框架的系统时,录制回放都没有报错,但是回放后系统中没有产生数据,解决方法
- jQuery中scrollTop获取匹配元素相对滚动条顶部的偏移(此方法对可见和隐藏元素均有效。)
- entity framework 删除数据库出现错误的解决方法--最土但是很有效的方法
- 有效参与会议的十种方法
- Form开发中组件控制(是否可用,是否可见)的几个常用方法-----子功能的應用
- 有效的降低网站跳出率的方法
- 【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件
- FileSystemWatcher是软件程序开发常用到的一个监控组件,但是这个控件的Changed 时间方法老是触发2次或者多次,触发多次的情况