Spine动画导入COCOS和UNITY3D
发表于2018-08-27
项目中需要将SPINE动画导入UNITY3D和COCOS,虽然网上对于这方面的教程也有一些,但是对于其中会碰到的问题介绍的却不多。本篇文章就是在SPINE动画导入UNITY3D和COCOS的基础上,给大家分享一些可能会遇到的问题及相对应的解决办法。
一、COCOS LUA
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里面去看了。
以上就是Spine动画导入COCOS和UNITY3D的方法以及遇到对应问题的处理方式,希望可以帮到各位。