cocos2dx 3.x 使用dragonbones 4.5 -- (二)

前端之家收集整理的这篇文章主要介绍了cocos2dx 3.x 使用dragonbones 4.5 -- (二)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这次主要来说说基本结构内存机制


当然还是要拿spine来做个比较。spine的运行库,内存管理是完全按照cocos引擎的RC机制来的,用起来和普通的node并无差别。函数原型大概是这样:

SpineNode* create(boneFile,atlasFile,pngFile)

依次传入骨骼文件名、图集json名、图片名,然后就会返回给你一个node,直接就开用了。这样做有几个 缺点

1、每次都会去读取一次骨骼文件。如果对一个骨骼频繁读取,这个地方可以考虑自己做一个缓存。

但是他也有优点

1、atlas那一部分,用的是cocos引擎本身的atlas图集那一部分,好理解好使用好管理。boneFile不管做不做缓存,去读取多少次,这个atlas只有一次,且加入了缓存。

2、返回的node本身,也是和cocos引擎的内存管理机制吻合,好理解好使用好管理。


dragonbones就不一样了,他引入了一套自己的内存机制去管理boneFile读进来的boneData和atlasFile,增加了理解成本(以致于我粗略看了一遍都还不能具体详细的理解)。用法上也就不一样了,大概使用步骤:

1、读入boneFile。

2、读入atlasFile。

3、构造显示节点。(buildArmatureDisplay)

这样的话,缺点显而易见:

1、步骤繁琐。这一点,见仁见智,因为spine的缺点也说了,没有对boneFile的管理和缓存,但是我还是觉得他这个很烦。我自己加了缓存的spine库,操作也可以保持和spine一致。

2、增加理解成本。这个才是最重要的,文档也没有,还要自己去hack代码

优点也有:

1、对boneData做了缓存,避免对文件的反复读取,提高效率。



在我去看代码研究他的内存机制的时候,发现了很多不科学的地方,待续。。。

原文链接:https://www.f2er.com/cocos2dx/338420.html

猜你在找的Cocos2d-x相关文章