Cocos2d-x-3.17.2 升级spine

前言:


工作中一直是使用flash在做动画表现,随着flash的被遗弃,现在很多2D游戏动画都转为spine在做,业余时间就想尝试在cocos2dx中使用使一下spine。结果发现创建spine动画的时候报错:

Cocos2d-x-3.17.2 升级spine

查资料说是需要升级到最新的spine库,于是开始升级spine到最新版本。下面是一些我的环境配置:

cocos版本:cocos2d-x 3.17.2  

spine更新库下载地址:https://github.com/EsotericSoftware/spine-runtimes 

平台: windows

编译工具:Visual Studio 15 2017  CMake

Python 2.7.13

目前spine是支持cocos2dx 3.x 和 4.x版本的,根据你的需要自主选择。

这是spine官方提供的升级教程,其实整个升级过程不难,可能向我一样的新手有些部分可能不太理解,这里以cocos2dx 3.x版本为例进行升级

Cocos2d-x-3.17.2 升级spine

 

 

升级教程:


我是以cocos2dx cpp工程来进行升级的,所以先创建cocos2dx 工程,cocos2dx工程创建完毕,通过 CMake 创建模板工程:

Cocos2d-x-3.17.2 升级spine

工程创建完毕,红框文件是通过CMake创建的模板工程,具体环境搭建的详细部分可以参考官网:https://docs.cocos.com/cocos2d-x/manual/zh/installation/Windows.html

打开build-win32文件夹,找到.sln工程文件,打开:

Cocos2d-x-3.17.2 升级spineCocos2d-x-3.17.2 升级spine

可以进行编译,看一下默认工程能不能运行,我这里会遇到一个错:

Cocos2d-x-3.17.2 升级spine

解决办法也很简单,就是找到项目解决方案右键-》属性-》基本配置-》启动项,设置为你当前的项目就可以了:

Cocos2d-x-3.17.2 升级spine

 

创建工程完毕,然后删除cocos2dx工程内自带的旧版本spine,此处需要注意,spine文件夹下有一个CMakeLists.txt文件,这个是为了编译spine时使用的,后面我们会用到,不过也不用担心,后面用的时候会重新生成一份,所以这里直接把整个spine文件夹删除就可以:

Cocos2d-x-3.17.2 升级spine

Cocos2d-x-3.17.2 升级spine

然后打开使用vs打开工程,找到spine运行库,右键删除,将整个spine运行库删除,这一步是为了彻底将旧版本的spine引用从你的工程中清理掉:

Cocos2d-x-3.17.2 升级spine

然后去spine官网下载最新版的spine库,下载地址:https://github.com/EsotericSoftware/spine-runtimes ,下载完成之后,解压,将spine-cocos2dx下的spine/src/spine文件夹、spine-cpp下的include/spine文件夹、spine-cpp下的src/spine文件夹都拷贝到创建好的工程下的cocos2d/cocos/editor-support文件夹下:

Cocos2d-x-3.17.2 升级spineCocos2d-x-3.17.2 升级spine

在vs中打开工程,右键editor-support文件夹,新增文件夹,然后在新建的文件夹下新增已有项目将拷贝的所有文件都添加到的工程中:

Cocos2d-x-3.17.2 升级spine

然后在文件夹资源管理器下打开 你的工程\cocos2d\cocos\editor-support\spine  新建generate.py文件,将下列代码粘贴到其中,然后执行python文件,成功执行后会生成一个CMakeLists.txt文,这一步操作是为了将spine运行库,添加到编译列表中,在后面编译整个工程时候会将新版本的spine编译到工程中。如果报错也会有详细信息提示,根据提示修改就可以了:

import os
targetFile = "CMakeLists.txt"
prefix = "editor-support/spine/"
hFiles = []
cppFiles = []
def file_name():
	for root, folders, files in os.walk(os.getcwd()):
		for file in files:
			if os.path.splitext(file)[1] == '.h':
					ro = root.replace("\\", "/")
					if ro.rfind("v3") != -1:
						hFiles.append('{}v3/{}'.format(prefix, file))
					elif ro.rfind("v4") != -1:
						hFiles.append('{}v4/{}'.format(prefix, file))
					else:
						hFiles.append('{}{}'.format(prefix, file))
			elif os.path.splitext(file)[1] == '.cpp':
					ro = root.replace("\\", "/")
					if ro.rfind("v3") != -1:
						cppFiles.append('{}v3/{}'.format(prefix, file))
					elif ro.rfind("v4") != -1:
						cppFiles.append('{}v4/{}'.format(prefix, file))
					else:
						cppFiles.append('{}{}'.format(prefix, file))

file_name()

f = open(os.path.join(os.getcwd(), targetFile),"w")
f.write('include_directories(editor-support)\n\n    set(COCOS_SPINE_HEADER\n')
for file in hFiles:
	f.write('      {}\n'.format(file))
f.write('    )\n\n')

f.write("    set(COCOS_SPINE_SRC\n")
for file in cppFiles:
	f.write('      {}\n'.format(file))
f.write('    )')
f.close()

Cocos2d-x-3.17.2 升级spine

然后打开VS,重新编译,编译成功:

Cocos2d-x-3.17.2 升级spineCocos2d-x-3.17.2 升级spine

 

总结:


现在各种技术更新迭代实在太快,动不动就是各种版本的兼容问题,看了下网上关于spine升级的东西好像也不太多,有的也不太适合新手来学习,在cocos2dx引擎的使用方面,我也算是个新手,所以记录一下自己工程的升级过程,希望能帮到有需要的热爱程序的同行。

另外强推大家稍微学习一下python,太好用了。在生成spine运行库的CMakeLists.txt文件的时候,我是手动修改的,逐个文件输入,费事费力而且容易出错疏漏。使用python脚本完全不用担心这些问题。

上一篇:cocos2dx 面试题


下一篇:cocos2d-x math之Vec3封装