些容易导致掉帧的原因

  1. 矢量图(图形)
    不要用矢量图,点击区域可用空的组件替代,遮罩的bar用位图替代
    比如fgui不要用图片装载器画一个图.

  2. 遮罩
    尽量少的用遮罩,有些《静态》地方没办法必须要用遮罩的(比如头像要切成六边形),必须cacheAsBitmap尽量少的用遮罩,有些《静态》地方没办法必须要用遮罩的(比如头像要切成六边形),必须cacheAsBitmap

  3. 组件元素太多(在列表元素体现比较明显)
    组件中不要刻意追求文件小而把图片切的很细,直接做成一张图切九宫就好

  4. 显卡压力

    1. 滤镜的使用,每使用一个滤镜,就要多一个drawcall,一个带文字滤镜的文本按钮,占3个draw。尽量少用滤镜,尤其是在列表元素中,一些程序数字要带滤镜的,让美术做成图片字,这样效率比较高
    2. 按钮没有置灰态,而用系统自带的滤镜置灰(迭代置灰,影响drawcall很大)。按钮加上置灰态的控制器选项,并用显示控制做一下置灰态。
    3. 图集穿插太频繁,渲染一个文件的时候,重复上传同一个图集到GPU上,导致drawcall上涨。组件尽量做扁平化,尽量同一图集的元素一起绘制,降低图集穿插导致drawcall升高,尤其是列表元素,更要注意
    4. 同一像素坐标上的元素越多,越耗显卡。尽量用扁平化显示层级,同一像素上叠加的元素要尽量少
  5. cpu太高

    1. 某一时刻代码无必要的执行导致那一时刻很卡(MsgFieldsUpdate会导致主界面头像框重新编制、主界面上各种监听按钮重新设置控制器。表的首次解析等非常严重掉帧)
    2. (个例)引用了鼠标库,但是在手游地址没有将鼠标库禁用,导致手机上每帧执行显示对象的hitTest,CPU超高占用,掉帧严重
    3. GC太频繁(用好对象池,比如CallBackVO,不要随手一个new)
    4. 界面中尽量重用元素,比如有一个item里有多个图标,以“一个图标在不同控制器下显示不同位置”来代替“放两个图标,通过控制器控制显示哪个”,这样能加快初始化速度
  6. 内存泄露常犯

    1. 一个复杂组件(如BonusIcon),它里面有很多个元素,但是同一时间只显示一个元素(比如有CommonItemIcon和PetIcon,同一时间只会显示CommonItemIcon或PetIcon),这时调用dispose,不会调用不显示组件的dispose,需要手动调用(比如这边的PetIcon)1. 一个复杂组件(如BonusIcon),它里面有很多个元素,但是同一时间只显示一个元素(比如有CommonItemIcon和PetIcon,同一时间只会显示CommonItemIcon或PetIcon),这时调用dispose,不会调用不显示组件的dispose,需要手动调用(比如这边的PetIcon)
    2. Dictionary里面删除一项的时候,只调用了delete方法,没有先取出来dispose
    3. static方法里面new出来的东西如果没有管理,就会GCROOT,不能释放。应该要用对象池等方式来创建对象。
    4. 事件没移除
    5. fairygui.UIPackage.createObject出来的对象,一定要看一下是否在添加它的组件里dispose的时候,它会被dispose,不然要手动dispose(这里有一个特殊情况,刚开始做的时候是有手动调用createObject出来对象的dispose,但是由于重构,不要这个createObject出来的对象了,忘记把createObject这行删掉,但是dispose删掉了,导致内存泄露)
    6. 区分好MVC各模块的职责,Data.ts里面就好好放data,不要出现显示对象,因为Data里面的dispose很暴力,词典直接dic = null或dic = {},如果dic是createObject出来的显示对象,直接导致大片内存泄露(h5_hero中的tipItemDic就存在这个问题)。词典如果是显示对象,要先取出来dispose,再设空
    7. egret.Timer只调用了移除onTimer事件,但是并没有stop,导致一直在后台跑
    8. TipMgr.addTip和TipMgr.removeTip所传的目标不一致,导致内存泄露(游戏中非常普遍存在)

EgretH5游戏开发笔记(一)相关推荐

  1. 【Visual C++】游戏开发笔记十三 游戏输入消息处理(二) 鼠标消息处理

    本系列文章由zhmxy555编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7405479 作者:毛星云    邮箱: happyl ...

  2. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    游戏开发笔记二十七 Direct3D 11入门级知识介绍 作者:毛星云    邮箱: happylifemxy@163.com    期待着与志同道合的朋友们相互交流 上一节里我们介绍了在迈入Dire ...

  3. 【Visual C++】游戏开发笔记四十一 浅墨DirectX教程之九 为三维世界添彩:纹理映射技术(一)...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8523341 作者:毛星云(浅墨 ...

  4. [置顶]       【Visual C++】游戏开发笔记之一——API函数、DirectX的关键系统...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7318264 作者:毛星云    邮箱: h ...

  5. 【Visual C++】游戏开发笔记十四 游戏画面绘图(四) 华丽的CImage类

    本系列文章由zhmxy555编写,转载请注明出处. http://qianmo.blog.51cto.com/5127279/875711 作者:毛星云 邮箱: happylifemxy@qq.com ...

  6. 【Visual C++】游戏开发笔记之八——基础动画显示(二)游戏循环的使用

    在笔记七中我们讲解了用定时器来产生动画的效果.定时器的使用固然简单方便,但是事实上这样的方法仅适合用在显示简易动画及小型的游戏程序中.因为一般而言,游戏本身需要显示顺畅的游戏画面,使玩家感觉不到延迟的 ...

  7. 【Visual C++】游戏开发笔记四十 浅墨DirectX教程之八 绘制真实质感的三维世界:光照与材质专场...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 作者:毛星云(浅墨)    邮箱: happylifemxy@163.com 本篇文章里,我们对Direct3D之中固定功能流水线中的3D ...

  8. 【Visual C++】游戏开发笔记十九 DirectX与OpenGL的博弈

    From: http://blog.csdn.net/zhmxy555/article/details/7522960 本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://bl ...

  9. 【Visual C++】游戏开发笔记三十四 浅墨DirectX提高班之三 起承转合的艺术:Direct3D渲染五步曲...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8223965 作者:毛星云(浅墨 ...

最新文章

  1. Javascript-稳妥构造函数模式
  2. OpenCASCADE绘制测试线束:数据交换命令之XDE 形状命令
  3. linux ftp日志_linux学习笔记(一)——Linux分区和目录结构
  4. 如何在一个html页面中提交两个post,如何在同一个页面上从Django和Ajax获得多个post请求?...
  5. 使用命令行编译Less源文件
  6. 用Alamofire进行网络请求的一段代码解析(一)
  7. java中的greeting_JAVA基础知识——字符串
  8. 2021-09-06
  9. 安装win11,跳过TPM2.0限制
  10. 向PDF写入签名日期
  11. short java_java基本数据类型short的使用(23)
  12. 应急响应-文件痕迹排查
  13. 你应该掌握的JavaScript高阶技能(六)
  14. python nlp文本摘要_NLP(十一) 提取文本摘要
  15. MT6762 datasheet,MT6762规格书,MT6762芯片参数资料
  16. 常见点击反应(Click Reactions)及其试剂——CuAAC
  17. centos下查看服务器型号命令
  18. Arduino LCD1602电子时钟
  19. 英语十大词性之二 - 动词
  20. PHP导入(百万级)Excel表格数据

热门文章

  1. 解决NVIDIA显卡 GPU显示器不可用的问题(亲测系列)
  2. 免费分享价值20多万9大编程教学视频
  3. 记录总结并分享下自己找工作的经历
  4. 测试cpu多核性能软件,CPU测试软件权重大改,多核性能仅占2% 玩家:你疯了吗
  5. 第1部分 C语言程序设计编辑与调试环境
  6. java调用个人微信api接口实现收发消息发朋友圈
  7. Css样式表中:margin、paddi…
  8. rust过程宏 proc-macro-workshop解题-2-debug
  9. 【JavaSE】异常 超详讲解(编程思想)
  10. 分析2000余张马蜂窝游记照片,只为找到泰国芭提雅最美“小姐姐”