【unity优化一】性能检测工具

1、Unity内置分析器Profiler、Xcode分析工具

2、“优化”的定位:手机比PC有更多性能瓶颈,对游戏软件有严格要求。项目开发过程中,性能优化是最重要、最艰难、最容易被忽略、最可能导致失败的东西,是程序员提升自己时必须掌握的知识。注重对图形学和引擎内部的了解、实践、思考总结。

3、Profiler

   1)CPU Usage
WaitForTargetFPS:
       Vsync(垂直同步)功能所,即显示当前帧的CPU等待时间
     Overhead:
       Profiler总体时间-所有单项的记录时间总和。用于记录尚不明确的时间消耗,以帮助进一步完善Profiler的统计。
Physics.Simulate:
       当前帧物理模拟的CPU占用时间。
     Camera.Render:
       相机渲染准备工作的CPU占用量
RenderTexture.SetActive:
       设置RenderTexture操作.
       底层实现:1.比对当前帧与前一帧的ColorSurface和DepthSurface.
                2.如果这两个Buffer一致则不生成新的RT,否则则生成新的RT,并设置与之相对应的Viewport和空间转换矩阵.
     Monobehaviour.OnMouse_ :
       用于检测鼠标的输入消息接收和反馈,主要包括:SendMouseEvents和DoSendMouseEvents。(只要Edtor开起来,这个就会存在)
     HandleUtility.SetViewInfo:
       仅用于Editor中,作用是将GUI和Editor中的显示看起来与发布版本的显示一致。
GUI.Repaint:
       GUI的重绘(说明在有使用原生的OnGUI)
Event.Internal_MakeMasterEventCurrent:
       负责GUI的消息传送
     Cleanup Unused Cached Data:
       清空无用的缓存数据,主要包括RenderBuffer的垃圾回收和TextRendering的垃圾回收。
          1.RenderTexture.GarbageCollectTemporary:存在于RenderBuffer的垃圾回收中,清除临时的FreeTexture.
          2.TextRendering.Cleanup:TextMesh的垃圾回收操作
Application.Integrate Assets in Background:
       遍历预加载的线程队列并完成加载,同时,完成纹理的加载、Substance的Update等.
     Application.LoadLevelAsync Integrate:
       加载场景的CPU占用,通常如果此项时间长的话70%的可能是Texture过长导致.
     UnloadScene:
       卸载场景中的GameObjects、Component和GameManager,一般用在切换场景时.
     CollectGameObjectObjects:
       执行上面M项的同时,会将场景中的GameObject和Component聚集到一个Array中.然后执行下面的Destroy.
     Destroy:
       删除GameObject和Component的CPU占用.
     AssetBundle.LoadAsync Integrate:
       多线程加载AwakeQueue中的内容,即多线程执行资源的AwakeFromLoad函数.
     Loading.AwakeFromLoad:

       在资源被加载后调用,对每种资源进行与其对应用处理.

   2)GPU Usage

     Device.Present:
       device.PresentFrame的耗时显示,该选项出现在发布版本中.
     Graphics.PresentAndSync:
       GPU上的显示和垂直同步耗时.该选项出现在发布版本中.
     Mesh.DrawVBO:
       GPU中关于Mesh的Vertex Buffer Object的渲染耗时.
     Shader.Parse:
       资源加入后引擎对Shader的解析过程.
     Shader.CreateGPUProgram:

       根据当前设备支持的图形库来建立GPU工程.

   3)Memory Profiler

     Used Total:
       当前帧的Unity内存、Mono内存、GfxDriver内存、Profiler内存的总和.
     Reserved Total:
       系统在当前帧的申请内存.
     Total System Memory Usage:
       当前帧的虚拟内存使用量.(通常是我们当前使用内存的1.5~3倍)
     GameObjects in Scene:
       当前帧场景中的GameObject数量.
     Total Objects in Scene:
       当前帧场景中的Object数量(除GameObject外,还有Component等).
     Total Object Count:

       Object数据 + Asset数量

    4)Detail Memory Profiler

     Assets:
      Texture2d:记录当前帧内存中所使用的纹理资源情况,包括各种GameObject的纹理、天空盒纹理以及场景中所用的Lightmap资源.
     Scene Memory:  
 记录当前场景中各个方面的内存占用情况,包括GameObject、所用资源、各种组件以及GameManager等(天般情况通过AssetBundle加载的不会显示在这里).
     Other:
       ManagedHeap.UseSize:代码在运行时造成的堆内存分配,表示上次GC到目前为止所分配的堆内存量.
       SerializedFile(3):
       WebStream:这个是由WWW来进行加载的内存占用.
       System.ExecutableAndDlls:不同平台和不同硬件得到的值会不一样。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值