cocos2dx 升级至 spine v3.8 快速加载 多个动画 缓存优化方案

针对spine官方代码在加载多个动画时的卡顿问题,本文提出了一种优化方案,通过引入引用计数实现SkeletonData的缓存,显著提高了加载效率。测试显示,加载200个相同动画与加载一个无明显差异,特别适合拥有大量相同动画的场景,如游戏背包特效。文章提供了源代码下载链接以供参考,并建议在游戏退出时清理缓存。
摘要由CSDN通过智能技术生成

在spine官方提供的代码中,没有提供动画文件的缓存处理,当同时加载多个动画的时候会卡帧(例如你的游戏中背包里有30个物品,每个物品都有一个相同的特效),
动画数据数量越大,卡得越厉害。为此,我们需要对官方提供的代码做一些优化,经测试加100个相同动画和加载一个动画没有区别,效率提高99.99%:
测试代码:创建200个相同动画 在这里插入图片描述
在这里插入图片描述
效果: 200百个动画瞬间加载完成,适用于场景中有大量且相同的动画,例如游戏中的背包有50个格子,每个格子上都有一个spine特效

步骤:
(注:可以把下面的代码类声明和实现都写在 namespace spine里面,这样和官方代码格式统一)
首先找到cocos2dx的spine库,通常在cocos2d/cocos/editor-support/spine路径下。
在vs工程里默认有4个项目:(libcocos2d; librecast; libspine; 还有一个就是你的项目了) 。在libspine项目下就是整个spine库的代码了。
1.找到skeletonRender.h文件并在里面添加一个缓存的单例类

    class SpineDataCache
    {
        static SpineDataCache* m_Instance;                //单例模式
        std::unordered_map&l
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呦呦鹿鸣.

你的打赏是给予我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值