避免“敏感操作”
--NGUI
1.元素隐藏显示-->FillAllDrawCalls
FillDrawCalls常见原因:
添加/删除元素时,穿插了其他UIDrawCall,例如一个Panel有DrawCall A,B等,在更新时A中穿插(根据Depth来的)了使用B的材质的UI,那么Panel就会变成ABAB。
添加/删除的元素自成一个UIDrawCall(没有任何一个UIDrawCall和它匹配,或是没有包含这个Depth的)
2.避免方式
尝试让插入的元素能够合入现有的UIDrawCall(在Panel中放入一个全透明的Sprite占用这个Depth正好生产一个UIDrawCall,那么新的UI就能合入到这个UIDrawCall,缺点容错率低)
通过scale=0或者是alpha接近于0来“隐藏”(尤其是冷却数字、冷却条,技能条),alpha为0和接近于0有本质区别,scale=0并不会把顶点删掉,而是把它缩放为0的,网格、DrawCall还在,也会参与网格重建,好处在于不会引起上面产生的峰值
--UGUI
元素的position赋值-->Canvas.BuildBatch
优化选项(NGUI)
static:优化移动UIPanel时(跳过LateUpdate的轮询)
visible:优化大量网格更新时
网友评论