需求背景·:在游戏中使用了大量的帧动画,并且为了drawcall的优化使用了 cocos的自动合集功能,因为帧动画的动作效果需要统一 所以图片会有大量空白部分,虽然cocos有自己的trim,但在自动合图时空白部分还是会产生大量的空白部分,所以有了本优化方案。

优化优点:帧动画图片小了可以有效减少包体、内存,以及drawcall。

优化思路:核心的游戏逻辑为帧动画,所以在切图后记录切掉的偏移量在播放帧动画时候还原,即可。

1、第一步是切图,本人使用的是nodejs处理,可自行选择,脚本会放在下边。

2、第二步是 还原 帧动画的 位置,核心代码如下

  let sfrc: cc.Rect = sf._spriteFrame.getRect();let sfOfs: cc.Vec2 = cc.v2(sf._spriteFrame.getOffset().x, sf._spriteFrame.getOffset().y);this.sp.node.anchorX = 0.5 - (sfOfs.x / sfrc.width);this.sp.node.anchorY = 0.5 - (sfOfs.y / sfrc.height);this.sp.spriteFrame = sf._spriteFrame;this.offsetY = sf._spriteFrame.getOriginalSize().height * 0.5;let v2: cc.Vec2 = cc.v2(sf._spriteFrame.getOffset().x, sf._spriteFrame.getOffset().y);this.sp.node.y = this.offsetY + v2.y + sf._OffsetY;this.sp.node.x = (sf._OffsetXL - sf._OffsetXR) / 2 + v2.x;

SpriteFrameOffset 类记录 偏移等信息

 private m_sp: cc.SpriteFrame = null;private m_path: string = null;private SpriteFrameOffset: cc.Vec4 = new cc.Vec4(0, 0, 0, 0);   //左 下    x偏移  y偏移 public constructor(sp: cc.SpriteFrame, path: string) {this.m_sp = sp;this.m_path = path;let offset = MyApp.dl.ResOffset_ResOffset[path + ".png"] as ResOffset_ResOffset;if (offset) {this.SpriteFrameOffset = new cc.Vec4(offset.Life, offset.Right, offset.Down, offset.Up);}}

文件附上  PngClipper

文件新增了  帧动画 裁切 功能

更新文件    PngClipper1.01.zip

Cocos Creator 优化,帧动画优化相关推荐

  1. Cocos Creator中的动画支持技术

    Cocos Creator主要亮点 官方的权威描述是:Cocos Creator是以内容创作为核心的一体化游戏开发工具,这个引擎基于Cocos2d-x,组件化,脚本化,数据驱动,跨平台发布. 本人使用 ...

  2. Cocos Creator 基于 Spine 动画的 AVATAR 换装系统优化

    很多游戏开发团队都正在使用 Spine 动画软件来制作人物 AVATAR 动画.今天,玩吧技术专家组的红孩儿将以玩吧 APP 中的游戏<噜噜喵>为例,同大家分享基于 Spine 动画的 A ...

  3. Cocos Creator 性能调优优化集锦

    01 为什么要做性能优化? 性能:是一种优秀的能力.唤醒快.运行持久.稳定. 这种能力在游戏上能让你的用户感觉很爽,表征表现为加载快.手机不发热.运行流畅.不卡顿. 所以,性能优化的终极目标是让你的用 ...

  4. Android性能优化 _ 大图做帧动画卡?优化帧动画之 SurfaceView滑动窗口式帧复用

    (ps:粗斜体表示引导方案逐步进化的关键点) SurfaceView逐帧解析 & 帧复用 简单回顾下上一篇的内容:原生帧动画在播放前解析所有帧,对内存压力大.SurfaceView可以精细地控 ...

  5. cocos creator 方法数组_Creator | 优化三剑客之内存!

    官方文档: 资源加载: https://docs.cocos.com/creator/manual/zh/scripting/dynamic-load-resources.html 资源释放: htt ...

  6. UE4项目优化(帧数优化)相关知识

    控制台命令 r.screenpercentage 0~100 0是百分之百 如果改了这个 游戏运行超级流畅说明瓶颈在GPU上 stat fps 显示帧率(Frame Per Second)(或者快捷键 ...

  7. android 骨骼动画库,cocos creator spine骨骼动画组件使用

    1: 掌握sp.Skeleton组件的使用; spine骨骼动画工具 1: 骨骼动画: 把动画打散, 通过工具,调骨骼的运动等来形成动画 2: spine是一个非常流行的2D骨骼动画制作工具 3: s ...

  8. [Cocos Creator] 获取龙骨动画dragonbones精确外边框

    引擎版本2.2.1 // TS GetDragonbonesRect(dragonBones: dragonBones.ArmatureDisplay): cc.Rect {let rect = cc ...

  9. 麒麟子Cocos Creator 3D研究笔记五:模型骨骼动画查看器

    负一.​先说两句 本文索引是负一开头,那是因为这一小节是​最后加上来的.为了不牵一发动全身,就这样最好了. 写文章每次要自称的时候,麒麟子三个字打着太费劲,以后文章中,我就叫自己阿子吧​. 大家从今天 ...

最新文章

  1. 《LeetCode力扣练习》第12题 C语言版 (做出来就行,别问我效率。。。。)
  2. 安卓手机可以用python编程软件-可以在手机上进行Java,Python的编程软件,你用过么?...
  3. 【OkHttp】OkHttp 上传图片 ( 获取 SD 卡动态权限 | 跳转到相册界面选择图片 | 使用 OkHttp 上传图片文件 )
  4. 根据txt中的文件名将文件复制到目标文件夹中
  5. 用 Python 实现一个大数据搜索引擎
  6. 阿里P8亲自讲解!java声明类的语法格式
  7. Magento 自定义URL 地址重写
  8. matplotlib Artist 教程
  9. Redlock 算法:Redis 实现分布式锁(译)
  10. 荒野行动为什么不能获取服务器信息,荒野行动获取服务器信息一直不动 服务器信息0解决方法...
  11. 在Ubuntu系统下进行引导修复
  12. 编译原理c语言递归下降程序,编译原理(递归下降分析程序)
  13. 利用百度API实现图像识别
  14. 写好商业计划书,融资就成功了一半!
  15. SSM在线学习网站的设计与实现毕业设计源码011451
  16. Git 读书笔记(二)
  17. mysql添加字段及备注_MySQL字段的说明和备注信息
  18. java宝典_java宝典
  19. oracle ords使用,OracleRESTDataServices(ORDS):Authentication认证
  20. 依赖反转(倒置)原则(Dependency inversion principle,DIP)

热门文章

  1. 高中生也能成为软件达人吗?
  2. 小程序开发之微信接入微信调用wenxin4j
  3. Java语言基础,面向对象
  4. 如来十三掌(与佛论禅、Rot13编码)
  5. IoT物联网——各大厂质量保障实践分享汇总(智能语音视频篇)
  6. java 机器人捡豆子,孩子注意力不集中怎么办?小游戏来帮忙
  7. 征战奥斯卡,3部冲奥动画短片制作解析抢鲜看
  8. 网页中Flash播放器里的视频获取的方法
  9. JS下拉列表动态收缩与展开
  10. 魅族flashfire_高通平台所有黑砖(不开机)手机通用救砖方法