减少不必要的绘图调用以避免重建或降低重建的成本会触发用户界面事件来遍历过多的图形(图像、文本等)。)启用了射线投射目标
如果条件满足,Canvas可以批量调用一些drawcalls来减少drawcalls的数量(不同的Canvas不能批量调用)
调试用户界面批处理
打开探查器,在用户界面列中,您可以看到有一个多少批处理,以及* *中断批处理的原因中断原因* *
共批次条件
使用相同的材质(包括相同的纹理),可以合并与深度相邻的用户界面元素
包括重建布局,更新几何和更新材料,这些都有相应的脏标识触发总和,下一帧将是处理
重建触发器批处理,所以
重建布局:由于布局控制器的布局元素发生了变化(如顶点位置变化),它将调用脏更新几何:调用国内生成,然后调用布局更新
OnPopulateMesh:生成顶点Helper的虚拟方法(VertexHelper是一个辅助类,只包含位置、法线切线、顶点颜色、UV等顶点数据。还没有生成网格),Image、RawImage、Text分别重写,其中Image基于Image Type,Text根据Text的设置(比如溢出模式、字体大小,等)生成VertexHelper。)
再次修改VertexHelper:从自身和子对象(如果实现的话)获取所有IMeshModifier接口,逐个调用ModifyMesh方法修改VertexHelper生成网格通过VertexHelper: UPDATE MATERIAL:
设定材质:设定纹理:
引发重建的形势
设置垂直脏:可输入
将GraphicRaycaster组件添加到画布(或特定的子对象),以便在用户界面事件发生时,可以遍历启用Raycast目标的所有子对象。
优化
如果画布中的所有用户界面都不需要用户界面事件,您可以直接移除GraphicRaycaster组件。如果某个图形组件不需要用户界面事件,
GraphicRaycaster的父类BaseRaycaster在OnEnable中将自己添加到RaycasterManager的Raycaster列表中。当事件系统生成事件时,它将遍历RaycasterManager的Raycaster列表。为每个Raycast调用Raycast函数,为Ray检测检查GraphicRaycaster所在的同一画布中的所有图形(考虑是否启用Raycast目标、是否消除canvasRenderer、画布中使用的相机模式等)。)
https://learn . unity.com/tutorial/optimization-unity-ui # 5c 7f 8528 EDB c2a 002053 b5 a 2https://zhuan LAN . zhi Hu.com/p/366779113
xxxxbxxx下一篇:关键词挖掘站网(体重浮动的原因)
有话要说...