「U3D优化」记一次资源加载卡顿的问题

发布时间:2024-04-13 09:32:13 浏览量:187次

问题

游戏进入战斗后,每次第一次英雄出手的第一个技能一定会卡顿。英雄释放技能会播放Spine动画,同时播放技能特效,且对面受伤的单位会造成飘血,生成飘血的动画。

注:手机才会卡,电脑运行不卡。

过程

  • 在Android真机调试下,监控Profiler。
  • 使用Profiler.BeginSample性能热点
  • 通过Profiler找到卡顿的帧,根据热点查看每个热点消耗的CPU时间,如此反复调试定位。
  • 实际操作

    一开始是怀疑特效或者动画的问题,所以临时加了切换技能的时候就播放技能动画和特效,不是真实的对目标单位释放。

    结果:单独播放技能和特效不会造成卡顿。因为和这两个无关。

    可能是技能释放后打到目标身上的飘血有关,所以在播放释放技能时,同时加上飘血。

    部分lua脚本代码

    结果:不会造成卡顿,和简单的飘血也没太大关系。

    使用真机调试,监控Profiler。

  • Build Settings 界面勾选 Development Build, Autoconnect Profiler。
  • Build and Run 打包到真机并运行
  • Console可以选择 Editor -> AndroidPlayer(ADB@...)
  • Profiler可以选择 Editor -> AndroidPlayer(ADB@...)
  • 查看CPU运行结果
  • 使用Profiler.BeginSample逐步反复进行监控调试发现:

    热点lua代码添加

    Profiler中的监控情况如下:

    通过查询发现Atlas/AtlasTextCN的文字图集除了多语言的文字图集,还包含了很多大图的带文字图片(活动、抽奖等),总的有4M的图片资源,我们这边只想加载一个暴击的文字,所以造成卡顿。

    结论:图集AtlasPrefab打包不要包含这些大图进来,尽量减少其大小,避免一次加载过大。

    热门课程推荐

    热门资讯

    请绑定手机号

    x

    同学您好!

    您已成功报名0元试学活动,老师会在第一时间与您取得联系,请保持电话畅通!
    确定