原创
好久没写教程了,主要是太忙了,最近一直在搞网狐的开发,网狐的代码确实不错,手头上做的棋牌外包,同时遇到要将SPINE动画导入U3D和COCOS,网上一般的使用教程很多的,但是很多坑点没有说到,我把遇到的坑记下来。本来我自己是动画师出身,做了5年的动画,还挺想玩一下SPINE的,但是很遗憾,盗版只到1.8好像,正版已经3点几了,正版需要2100,肉痛啊。
一.COCOSLUA
1.播放Json动画
local Node_CarSpine = self:getResourceNode():getChildByName("Node_CarSpine")
spine_Car = sp.SkeletonAnimation:create("spine/chezi.json","spine/chezi.atlas",1)
spine_Car:setAnimation(0, "animation", false)
坑点: 运行时卡死,没有任何提示。原因是:COCOS版本和SPINE动画的版本不匹配,我当时是COCOS3.17,可以播放3.6.50的动画,但是2点几的带骨骼的动画不行,非骨骼动画可以播放,我用COCOS3.10播放2点几的没问题,3.6.50又不行。网上有工具,大概叫:spine3.0导出文件转换成cocos3.8可使用文件工具
2.播放Skel动画
MainScene.spine_Man=sp.SkeletonAnimation:createWithBinaryFile("spine/pumpkin.skel","spine/pumpkin.atlas",1)
坑点: 运行奔溃,会弹个窗口,大概意思是骨骼信息错误,COCOS3.14以后才有比较好的对Skel动画的支持,原因是:COCOS版本和SPINE运时库不匹配,我的COCOS是3.17的,但是SPINE官方最多weih维护到COCOS 3.16,降级后成功运行。
二.UNITY3D
1.播放Json动画
API我就不写了,好久没用U3D了,网上一大堆教程,主要是把 atlas 文件,改名成 atlas.txt
2.播放Skel动画
主要是把 atlas 文件,改名成 atlas.txt skel 文件,改名成 skel.bytes
坑点:加载的时候报错,大概提示数组越界,原因是SPINE运行库和SPINE动画不匹配,更换SPINE库版本。
总结:Skel动画是二进制文件,Json是配置文件,网上有人测试过Skel动画大概快8倍,二进制的东西肯定是性能好的多,但是Skel文件无法明文知道动画名称,U3D里加载就能看见,COCOS里也可以通过 spAnimation** animal = skeletonNode->getSkeleton()->data->animations 获取到动画名,但是COCOSLUA里不行,到data里就获取不到了,我看了下绑定文件没有绑到LUA里去,所以LUA调用不了,只能自己绑定,或者是导入到U3D里面去看了。