UI界面重建流程

每当元素 在Canvas下发生改变
发生重绘或重建

每当有UI界面元素 布局 发生改变, 脏布局
图形发生改变,脏图形, 颜色 材质  使用的贴图

重建过程 重新计算 脏组件

怎么看到哪些被设置为脏?Canvas SendWillRendererCanvases

bitbucket UGUI组织结构 Rect Transform 看不到,因为继承了transform
属于unity native  C++ 层
Canvas也是核心,被融到 批处理管线,没公开
CanvasGroup可以看到

3个部分 编辑器UI部分 引擎UI部分 运行时的UI界面 

当UI界面大小发生变化,设置顶点脏 布局脏

脏了要通知父节点, 父节点重算

什么情况 Unity会重建
1.布局
2.顶点,修改UI颜色实际上修改的是顶点颜色,改颜色设置脏了
修改材质的颜色参数,改shader参数不会造成重建
3.材质:切换材质
OnTransformParentChanged
父节点发生改变
每一种类型的脏,会调用相应的不同的重建

布局组件
Layoutgroup 一个子节点发生改变 整个layout设为脏的

减少子元素需要被重建的数量

pixelperfect  UIcanvas 缩放 一个像素的误差 UI刚好贴在像素的边缘
pixelperfect 外观完美
移动元素  代价昂贵

做了UI界面动画 设为脏 dotween 会造成Canvas Rebuilding 解决方案:用shader做动画
可单独对canvas设置pixelperfect
单独启用 禁用 可用性

pixelperfect

划分多个子Canvas

不会移动 可以开启pixelperfect
滚动关闭pixelperfect,效率高很多,批次数增加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张老师带你学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值