基于flash骨骼动画的游戏unity实现

这篇博客探讨了2D动画的两种主要渲染方式——序列帧动画和骨骼动画,重点介绍了骨骼动画在Unity中的应用。针对Unity中动画嵌套导致的drawCall问题,提出了通过扁平化动画处理方案,以减少渲染层次并提高性能。同时,讨论了实时创建和缓存Mesh以平衡性能和内存消耗的方法。此外,还提到了一键导出工具对于简化工作流程和提高效率的重要性,并展示了运行效果,确保在同屏多个单位情况下仍能保持流畅的帧率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



常见的2D动画渲染方式
 


序列帧动画

动画细腻,对动画几乎没有什么限制,

导出文件比较大,运行时占用显存比较高
 

 


骨骼动画

适合对动作细腻程度不是很苛刻的项目比较适用,对动画制作有一定要求,
 

 


导出文件通常就是各个部件的合并贴图大小,运行时占用显存比较少

常用骨骼动画引擎

DragonBones

对动画制作要求相对较高,支持程度不错,不支持滤镜

Spine

对动画要求不高,支持度不错, 全新的工具对flash美术需要重新学习

GAF

对动画要求不高,支持滤镜,收费

为什么选用flash骨骼动画

flash页游培养了大批的flash动画人员

项目开发人员从页游转换过来

flash骨骼动画在之前的项目中长时间运行,有丰富的工具

移植到unity需要解决的问题

复杂动画如何进行一次drawCall,完成渲染
 


如上图所示,在flash 动画中元件嵌套是很常见的一种做法,手机游戏账号转让平台美术可以方便的复用一些元件动画,但是这也会给在unity中渲染带来一个问题,需要多个drawCall来完成在一帧上的动画显示。那么如何解决这个问题了?我们产用了扁平化动画来处理,将所有动画展开到Root帧上,来消除动画嵌套所带来的渲染层次问题。


如上图所示,在渲染的时候,会将嵌套中的原件,展开到根节点上,这样就可以做到一个drawCall 完成渲染。但是美术制作时并不需要考虑这个问题,这样就能做到工作简单化。提高工作效率。

实时创建Mesh 所带来的性能消耗

动画渲染过程中,我们需要创建Mesh以用来渲染,导入进来之后创建所有Mesh缓存所带来的性能和内存的消耗是不能接受的,所以只能是实时创建。实时创建的另一个弊端出现在了当场景上有多个单位时,对性能的消耗是很严重的,所以我们决定把创建的Mesh 缓存起来,这样的话即兼容了性能也兼容了内存消耗。这样实测的数据显示,同屏70个不同角色动画FPS仍然能够达到50左右。

文件结构
 


导出工具

一键导出的工具,是缩短工作流提高效率的工作利器,美术资源的修改更新,程序都只需要一件即可完成更新和替换,减少程序导出错误风险。
 


运行效果

运行效果达到美术预期,同时性能出色,同场景中50个不同单位,fps>55。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值