提示:spine大版本不向下兼容,如4.1版本打不开3.8的动画文件。
一、准备工作
- 新建cocos2dx-lua项目(我测试的项目版本是3.15和3.17)。
- spine版本选择下载 https://github.com/EsotericSoftware/spine-runtimes/releases。
二、升级spine底层代码
1. 删除原有spine代码
2. 导入新的spine代码
① spine代码里只需要这两个
② 拷贝上述两个文件里的代码文件全部拷贝到 frameworks\cocos2d-x\cocos\editor-support\spine 目录下面(v3是cocos 3.x版本,v4是4.0版本的)。
3. 回到Visual Studio工程重新导入spine代码到项目中
三、修改源文件代码
① lua_cocos2dx_spine_auto.cpp
#include "scripting/lua-bindings/auto/lua_cocos2dx_spine_auto.hpp"
#include "editor-support/spine/spine.h"
#include "editor-support/spine/spine-cocos2dx.h"
#include "scripting/lua-bindings/manual/tolua_fix.h"
#include "scripting/lua-bindings/manual/LuaBasicConversions.h"
#include "scripting/lua-bindings/manual/spine/LuaSkeletonAnimation.h"
#include "editor-support/spine/Animation.h"
#include "editor-support/spine/AnimationState.h"
#include "scripting/lua-bindings/manual/cocos2d/LuaScriptHandlerMgr.h"
#include "scripting/lua-bindings/manual/CCLuaValue.h"
int lua_cocos2dx_spine_SkeletonRenderer_setSkin(lua_State* tolua_S)函数里有两个地方是
...
bool ret = cobj->setSkin(arg0);
tolua_pushboolean(tolua_S,(bool)ret)
...
新版的spine里setSkin没有返回bool 而是void 所以这里两行代码写成
cobj->setSkin(arg0);
就可以了
② lua_cocos2dx_spine_manual.cpp
/****************************************************************************
Copyright (c) 2013-2016 Chukong Technologies Inc.
Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
#include "scripting/lua-bindings/manual/spine/lua_cocos2dx_spine_manual.hpp"
#include "scripting/lua-bindings/auto/lua_cocos2dx_spine_auto.hpp"
#include "scripting/lua-bindings/manual/tolua_fix.h"
#include "scripting/lua-bindings/manual/LuaBasicConversions.h"
#include "scripting/lua-bindings/manual/cocos2d/LuaScriptHandlerMgr.h"
#include "scripting/lua-bindings/manual/CCLuaValue.h"
#include "editor-support/spine/spine.h"
#include "editor-support/spine/spine-cocos2dx.h"
#include "scripting/lua-bindings/manual/spine/LuaSkeletonAnimation.h"
#include "scripting/lua-bindings/manual/CCLuaEngine.h"
using namespace spine;
// setBlendFunc
template<class T>
static int tolua_cocos2dx_setBlendFunc(lua_State* tolua_S,const char* className)
{
if (NULL == tolua_S || NULL == className || strlen(className)