每当元素 在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,效率高很多,批次数增加
UI界面重建流程
最新推荐文章于 2024-08-11 15:00:54 发布