总体性能——UI模块性能
来源:互联网 发布:淘宝卖 阿里进货 知乎 编辑:程序博客网 时间:2024/06/03 12:48
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[+]
NGUI:
如何定位:
UIRect.Update:UIWidget很多的时候,开销比较高;
(UI模块或屏幕进行缓存,当缓存时,有大量UI在屏幕外边,虽然降低了UIPanel.LateUpdate,但UIRect.Update(下面有UIWidget)每帧都会更新位置,这个开销非常高)
UIRect.Update一般是非常低,否则说明UI缓存非常多;
如何定位UI切换是否合理?
— 不推荐通过Instantiate/Destroy或Active/Deactive来频繁切换UI界面;
UICamera.Update:处理Click点击(UI界面的切换),比如打开背包或任务系统等;
UIRect.Start:一般在Instantiate UI界面时被触发,若是通过Active/Deactive触发,就不会看到UIRect.Start,只会看到UICamera.Update;
(使用NGUI开发时,UIRect.Start应尽可能少,否则说明UI界面在频繁进行Instantiate/Destroy操作)
注:对于频繁切换的复杂界面,比如背包、任务系统面板,应该移到视锥体外、或者把其Scale变为0,改变Camera的Layer(层级)进行切换;
三种方法的优劣:
1:移到视锥体外;(要把上面的脚本或动画等关闭,移出去后,其上面的UIWidget。Update仍在进行)(复杂的可以移出去,不复杂的就不需要,比如:血条等就不需要)
2:其Scale变为0;(Drawcall还是存在的)
3:改变Camera的Layer(层级)进行切换;(最快,且切换没有任何副作用,但Camera的Layer只有32个,会占用Layer层的个数)
Canvas.BuildBatch:表示在重建网格(动静没有分离或变换了一些参数);
如何定位Mesh重建是否合理?
1:动态元素和静态元素分离
表情会引起整个网格的重构;
2:合理配置UI Canvas/Panel
(一个Canvas下的widget不宜过多,除非能够做到完全的动静分离,一般别超过1000个顶点)
有的游戏中主城界面用NGUI,打斗界面用UGUI的原因:
UGUI在BuildBatch时几乎没有堆内存,而使用NGUI时,堆内存开销很高;
打斗时经常会有飘血或飘字,会导致UI.LateUpdate在持续地开销,即UIMesh在进行持续地重建;(如果能用一个尽量用一个,UGUI的性能远大于NGUI)
推荐文章链接:
1:如何读懂UWA性能报告?—NGUI篇
2:如何读懂UWA性能报告?—UGUI篇
- 总体性能——UI模块性能
- 总体性能——UI模块性能
- 总体性能——渲染模块性能
- 总体性能——物理模块性能
- 总体性能——动画模块性能
- 总体性能——加载模块性能
- 总体性能——渲染模块性能
- 总体性能——渲染模块性能
- 总体性能——物理模块性能
- 总体性能——动画模块性能
- 总体性能——加载模块性能
- 总体性能——粒子系统性能
- 总体性能——粒子系统性能
- 总体性能——GC调用
- 总体性能——GC调用
- 系统性能优化分析—总体思路
- 高性能服务器设计——总体框架介绍
- 总体性能-CPU性能占用
- spring-cloud 、spring-cloud-Eureka【一】
- linux关于bashrc与profile的区别
- 软考(六)-学会走心
- JavaScript基础
- 【A*求k短路】BZOJ1975 [SDOI2010]魔法猪学院
- 总体性能——UI模块性能
- 数据被储存在何处/
- app拨测
- Android应用线程池最大线程数量
- 绘制圆形探照灯
- 文件的分割(split)与合并(cat)
- Kotlin版RecyclerView加item点击处理
- 线程
- Spark SQL filter not contains