专栏首页Unity游戏开发Unity-Optimizing Unity UI(UGUI优化)02 Unity UI性能分析工具

Unity-Optimizing Unity UI(UGUI优化)02 Unity UI性能分析工具

几个有帮助的性能分析工具。关键工具:

  • Unity Profiler
  • Unity Frame Debugger
  • Xcode's Instruments or Inter VTune
  • Xcode's Frame Debugger or Intel GPA

拓展工具提供了方法级CPU毫秒级性能分析的解决方案,包括draw-call的细节和shader的性能分析。注意XCode帧调试和仪器只能在IL2CPP构建在苹果平台上的时候可用。

Unity Profiler

Unity Profiler的基础使用是去显示可对比的性能数据:在Unity Profiler运行的时候启用或者禁用UI元素,可以快速在UI hierarchy中缩小性能问题出现的位置。 去分析这个,可以去看Canvas.BuildBatchCanvas.SendWillRenderCanvases的输出情况。

图片.png

Canvas.BuildBatch是原生代码计算平台的Canvas Batch创建过程,如前所述 Canvas.SendWillRenderCanvases将调用注册了willRenderCanvases事件的C#脚本。Unity UI的CanvasUpdateRegistry类接收这个事件并用它来实现重构过程。这时dirty的UI组件将更新Canvas Renderers。

注意:为了更容易的观察UI的表现,建议禁止除了"Rendering","Scripts"和"UI"以外的全部跟踪类别。在Unity 2017.1中UI类别是全新的,但是,UI部分还是存在一些问题,一些UI元素没有正确的分类,可能在Canvas.SendWillRenderCanvases被认为是UI,但是在Canvas.BuildBatch被分类为OthersRendering

在2017.1或更高级版本中。这个profiler是Profiler窗口的最后一个,包括两个timeline和一个batch viewer。 第一个timeline显示CPU消耗时间在两个类别之间,分别计算layout和rendering过程。这个也存在一些问题一些UI function没有被包括进来。 第二个timeline显示了全部的batches,顶点和显示了event markers。 可以看见点击事件,这些marker帮助来确认造成CPU spike的原因 最后UI Profiler最有帮助的方法是在底部的batch viewer。这里可以看见全部的canvases和它们下面的生成的batched的列表。这里列出了可能感兴趣的关于每个canvas和batch的细节,这里你可以看到如何更好的优化UI和理解他们是如何batch的。 一个最频繁的原因,是UI元素使用了不同的texture或者material。在许多情况中,这可以通过sprite atlases来解决。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Unity-Optimizing Unity UI(UGUI优化)01 导航、Unity UI的基础概念与原理

    摘要: 通过Unity UI优化用户的界面驱动是一门艺术,以下将讨论基本的概念、算法和在Unity UI相关代码

    祝你万事顺利
  • Unity-Optimizing Unity UI(UGUI优化)03 Fill-rate,Canvas and Input

    随着UI shader的逐渐标准化,最大的问题是过高的填充率。这个问题是由于大量的重叠的UI元素和UI元素的相乘占据屏幕的主要部分。这些问题可能导致额外的高频率...

    祝你万事顺利
  • Unity-Optimizing Unity UI(UGUI优化)04 UI Controls

    这一章节专门针对UI Controls进行优化。大部分的UI Controls都对性能表现有一定的影响。

    祝你万事顺利
  • 开源分享-高仿微信

    该项目目前已经开源,作者也在对未完成的功能进行开发,后续包括视频消息,地理位置,点赞回复,聊天模块抽离等。

    杜少雄
  • 开源分享-高仿微信

    该项目目前已经开源,作者也在对未完成的功能进行开发,后续包括视频消息,地理位置,点赞回复,聊天模块抽离等。

    杜少雄
  • 开源分享-高仿微信

    该项目目前已经开源,作者也在对未完成的功能进行开发,后续包括视频消息,地理位置,点赞回复,聊天模块抽离等。

    杜少雄
  • AngularJS的数据绑定功能展示

    在AJAX型的单页应用普及之前,类似Rails、PHP和JSP之类的平台都可以帮助我们创建用户界面(UI),它们会把HTML字符串和数据混合起来,然后再发送给用...

    企鹅号小编
  • Unity-Optimizing Unity UI(UGUI优化)01 导航、Unity UI的基础概念与原理

    摘要: 通过Unity UI优化用户的界面驱动是一门艺术,以下将讨论基本的概念、算法和在Unity UI相关代码

    祝你万事顺利
  • [翻译]我们如何将 Airbnb Cereal 字体引入UI

    在印刷行业,决策通常在品牌传达层面上进行 - 需要考虑将外观,感觉和品牌准确表达。 但是在UI设计中呢?Airbnb 的 UI 界面正常情况有 90% 是文本...

    Fred Liang
  • 如何选择一个 vue ui 框架?

    “Material Design 并不是一种单一风格,而代表着一套源自纸张与墨水的适应性设计系统。经过精心编排,你将能够更快构建起美观且实用的产品。”

    程序员LIYI

扫码关注云+社区

领取腾讯云代金券