cocos2d-x 3.17.2 升级spine到最新4.1稳定版
前言:由于cocos2d-x 3.17.2 只支持spine 3.8 以下版本,美术同事想使用性能更好、效率更高的spine版本,所以花时间升级了一下cocos2d-x 3.17.2的spine版本
备注:
- spine的数据是不向下兼容的,比如:美术使用spine3.7,项目里也必须加入spine runtimes 对应的版本。即使项目接入的spine runtimes 版本是4.1 也无法正常播放spine3.7导出的动画数据.。升级之前想清楚,否则项目旧的spine动画资源无法正常播放。
- spine runtime 官网
正文
一、代码调整
- 1.1 从spine runtime 官网clone 项目并切到4.1分支。如图所示:spine 最新的稳定版本是4.1
- 1.2 移除掉项目目录
frameworks\cocos2d-x\cocos\editor-support\spine下的所有相关spine文件,并将D:\projects\spine-runtimes\spine-cpp\spine-cpp和D:\projects\spine-runtimes\spine-cocos2dx\spine-cocos2dx\src\spine下的文件全部拷贝到项目刚刚的目录。- 复制
spine-cocosedx相关文件到项目里
- 复制
spine-cpp相关文件到项目里
- 复制
- 1.3 使用cocos2d-x自带的lua bindings工具生成新的
lua_cocos2dx_spine_auto.hpp和lua_cocos2dx_spine_auto.cpp。工具目录frameworks\cocos2d-x\tools。不懂lua绑定流程的在社区自己找找,有很多相关指导文章。文末附件包含了绑定好的文件。 - 1.4 由于spine4.1和spine3.7差别很大,新增了很多接口,所以
lua_cocos2dx_spine_manual.cpp也得修改一下。具体也可以搜索一下:怎样手动绑定lua接口。文末附件包含了绑定好的文件。
二、工程调整
-
2.1 windows端
-
libSpine项目重新导入spine文件,如图所示:

-
libluacocos2d项目导入新增的
lua_spSkeletonData.cpp和lua_spSkeletonData.hpp
-
在
lua_module_register.cpp里添加新增的register_spSkeletonData_manual(L),
点击项目重新生成。 -
2.2 android 端
我这边是ndk-build,按照格式修改下面的文件(建议删除原来的文件列表,重新手动添加)-
frameworks\cocos2d-x\cocos\editor-support\spine的Android.mk -
frameworks\cocos2d-x\cocos\的Android.mk -
frameworks\cocos2d-x\cocos\scripting\lua-bindings\proj.android的Android.mk
-
-
2.3 ios 端
大体和Windows端一样,移除spine原文件后重新导入就可以了
三、spine4.1简介
- 创建animation接口说明
spine 4.1 使用上并没有太大区别。使用有三种接口:
SkeletonAnimation.createWithJsonFile普通的通过*json生成
SkeletonAnimation.createWithBinaryFile新增的二进制数据格式,貌似说性能提升不少
SkeletonAnimation.createWithData通过数据生成,这个数据可以重复使用。 - 新增 ANIMATION_INTERRUPT 和 ANIMATION_DISPOSE 两种事件类型
sp.EventType =
{
ANIMATION_START = 0,
ANIMATION_INTERRUPT = 1,
ANIMATION_END = 2,
ANIMATION_COMPLETE = 3,
ANIMATION_DISPOSE = 4,
ANIMATION_EVENT = 5,
}
附件
- lua binding后的文件
lua_cocos2dx_spine_auto和lua_cocos2dx_spine_manuallua-bindings-manual.zip (11.0 KB) lua_cocos2dx_spine_auto.zip (5.5 KB)
