在spine官方提供的代码中,没有提供动画文件的缓存处理,当同时加载多个动画的时候会卡帧(例如你的游戏中背包里有30个物品,每个物品都有一个相同的特效),
动画数据数量越大,卡得越厉害。为此,我们需要对官方提供的代码做一些优化,经测试加载100个相同动画和加载一个动画没有区别,效率提高99.99%:
源码连接:https://download.csdn.net/download/zhang1461376499/13189252
(注:可以把下面的代码类声明和实现都写在 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<std::string, spSkeletonData*> _mSkeletonData;//<spine文件路径,骨骼数据>
explicit SpineDataCache(); //前面的关键字是禁止SpineDataCache隐式调用,也就是防止用这个类直接创建对象
public:
static SpineDataCache* getInstance();
~SpineDataCache();
bool put(spSkeletonData* skeletonData, const std::string& key);
spSkeletonData*
cocos2dx 自带库 spine v2.x缓存优化方案
最新推荐文章于 2024-06-18 11:38:04 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)