U3D面试要点:Rebuild

什么时候触发

OnEnable

调用 CacheCanvas,获取父对象的Canvas组件

将父对象Canvas组件,注册到GraphicRegistry

SetAllDirty:

1. 通知LayoutRebuilder布局重建

2. Vertex页点信息(SetVerticesDirty)

3. Material材质(SetMaterialDirty)

 OnDisable

从 GraphicRegistry 移除 Canvas注册

通知 LayoutRebuilder 重建布局

 当RectTransform数值改变时

OnRectTransformDimensionsChange ():顶点Dirty、布局Dirty

 父对象改变(前/时)

前 OnBeforeTransformParentChanged:从GraphicRegistry移除注册、重建布局

时 OnTransformParentChanged:重新获取父对象中的Canvas,并重新注册在GraphicRegistry、SetAllDirty

当应用动画属性后

OnDidApplyAnimationProperties:SetAllDirty

当画布层次改变时

 OnCanvasHierarchyChanged:如果Canvas改变,重新注册到GraphicRegistry

 Rebuild干了啥

rebuild Layout

计算各元素的位置和大小

rebuild graphic

UpdateGeometry 重建网格数据:OnPopulateMesh:

1. 设置顶点三角形

2. 修改Mesh信息

3. 将信息设置到 canvasRenderer

UpdateMaterial 更新材质信息设置:canvasRenderer 的

1. 材质        2. 纹理

怎么办

动静分离,拆分Canvas,意义: 尽量减少 graphic Rebuild 的频率

删除不必要的节点和隐藏不用的节点,意义: 减少深度排序和rebuild Layout的执行时间

ScrollRect 关闭 Pixel Perfect, 意义: 尽量减少 layout Rebuild 的频率

设定移动闽值,降低开销

Material.SetColor

好处:不会更改网格信息,因此不会有Rebuild

坏处:因为修改了材质,所以增加一个DP

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值