让不可见的UGUI组件,只响应Raycast但是不参与GPU绘制的方法,有效降低OverDraw的产生
来源:互联网 发布:试卷生成软件 编辑:程序博客网 时间:2024/05/22 00:41
张博士他们搞的那个UWA公司在对unity的性能优化方面确实是6的不行呀,分享了好多很棒的方法呀。
原文地址,主要分享了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里呀,就省大事了~
再次感叹一下,高手在民间呀,群众的力量是很强大的!
0 0
- 让不可见的UGUI组件,只响应Raycast但是不参与GPU绘制的方法,有效降低OverDraw的产生
- 56. 让不可见的更可见
- fragment可见和不可见的方法
- fragment可见和不可见的方法
- 调用$.ajax成功但是success方法不响应的解决方案
- 基于GPU的RayCast算法
- Div 可见与不可见的两种方法
- 关于UGUI中Button,InputField等不响应的解决方法
- # css控制div垂直且水平的方法(不常用但是却很有效的)
- 设置View的可见以及不可见
- View的可见与不可见
- 如何判断当前的Fragment是否可见?Fragment的可见与不可见的判断方法。
- 让ViewGroup中Fragment可见时才加载和不重复加载的方法
- 如何让IE浏览器的状态栏不可见
- 注意不可见的字符!
- 创建不可见的Activity
- 产生不相同的识别码的方法
- 有效参与会议的十种方法
- Parcelable和Serializable的区别
- 喜欢的视频
- UVa-127 "Accordian" Patience
- spring4+hibernate5+dbcp2+struts2基础配置
- windows Android环境配置
- 让不可见的UGUI组件,只响应Raycast但是不参与GPU绘制的方法,有效降低OverDraw的产生
- 经典算法(2):黄金分割法(Gold)
- 103. Binary Tree Zigzag Level Order Traversal
- LeetCode 86. Partition List
- MYSQL之操作数据库表(一)
- Ubuntu - Use Closest Mirrors
- Thinkphp 3.2.3 隐藏入口文件及模块名称
- Strassen矩阵乘法(分治法续)
- 整理书桌