Unity基础—UGUI
- 引言:本文主要介绍UGUI原理以及相关八股内容
UGUI实现原理
解析查看
UGUI本质其实就是Mesh网格,每一个可以显示的元素都是以3D模型网格构建的 Unity3D制作一个图元、或者按钮和背景时候,都会构建一个mesh网格,再把图片放进去。 说人话:UGUI其实就是用mesh网格画了一个面片,用一个网格绑定了一个材质球,材质球里面放了图片
UGUIMesh合批规则
解析查看
同一Canvas里,相同层级的,相同材质球的元素进行合并 注:shader和贴图都要相同才能合批,所以注定Text和Image无法合批 合批就是将Canvas下多个UI的网格合并在一起,如果其中任何一个元素的材质、网格顶点、位置甚至颜色在该Canvas下动态创建和删除都会重新计算合批。所以UI要动静分离。层级尽量减少(层级多了,重新计算更耗时)。 合批的基本条件是Shader和贴图相同 ①合批第一步就是遍历Canvas下面UI组件,计算每个UI组件的深度值Depth(不是image的那个) ②在计算深度值的时候,会根据是否相交和能否渲染来计算深度,会得到一个UI队列 ③按照深度值从小到大排序 ④材质ID排序,Texture ID排序,渲染顺序排序,从小到大 ⑤最后得到的这个队列,判断相邻的两个元素材质贴图是否相同,然后合批。
UI网格相交
解析查看
比如Text一个字就是一个网格,会和其他UI发生相交 计算相交时,会遍历所有UI元素和已计算的底层UI元素(平方复杂度) 源码使用分组计算包围盒矩形 16个UI元素为一组进行计算 先计算是否和底层UI相交,如果相交在与本层级的做判定
如何实现匹配不同分辨率
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 游戏开发笔记!
评论