技术领域
本发明涉及手机游戏引擎技术领域,具体涉及一种兼容不同Cocos2d-x版本的方法。
背景技术:
Cocos 2d-x是一个支持多平台的2D手机游戏引擎,使用Cocos 2d-x进行开发可以很容易地将项目建立和运行在iOS,Android,黑莓Blackberry等操作系统中。
Cocos 2d-x具有不同的版本,因此在开发游戏的过程中将会面临引擎版本管理的问题,例如创建基于不同引擎版本的项目、升级现有项目的引擎版本等。与此同时,因为不同引擎版本之间存在很多差异,在使用时还需要考虑引擎版本与当前项目、与使用的编辑器之间的兼容性问题。
现有技术需要通过手动替换引擎文件的方式来管理项目的Cocos 2d-x版本,它要求技术人员对引擎文件的结构、使用方式有较为详细的了解。这种管理方式在实际兼容引擎版本时的操作也较为繁琐,而且替换引擎文件的过程一旦出错,将会导致游戏项目无法使用。此外,这种方式并不能有效地控制Cocos 2d-x版本的兼容性问题,如果错误地使用了与项目或编辑器不兼容的Cocos 2d-x版本,也将导致项目无法正常运作,从而降低项目开发的稳定性。
综上,现有方法在兼容不同Cocos 2d-x版本时具有技术门槛高、操作复杂、差错率高等问题。此外,项目或编辑器对Cocos 2d-x版本的约束控制也较差,从而导致项目开发的稳定性差。
技术实现要素:
本发明提供了一种兼容不同Cocos 2d-x版本的方法,以解决现有技术中兼容不同Cocos 2d-x版本时存在的技术难度高、操作复杂、差错率高、稳定性差的问题。
本发明提供的一种兼容不同Cocos 2d-x 版本的方法,包括如下步骤:
S1:Cocos编辑器获取可用的Cocos 2d-x 版本;
S2:Cocos编辑器使用所述可用的Cocos 2d-x 版本进行创建项目、Cocos 2d-x 版本升级、打包发布。
进一步的,所述Cocos编辑器获取可用的Cocos 2d-x 版本,具体为:
S11:FrameworkHelper类通过硬编码的方式内置当前所有兼容的Cocos 2d-x版本,并使用当前所有兼容的Cocos 2d-x版本完成初始化;
S12:FrameworkHelper类向服务器请求当前最新的Cocos 2d-x版本列表,当请求成功的时候,FrameworkHelper类便使用从服务器获得的当前最新的Cocos 2d-x版本列表作为支持版本列表,同时将所述支持列表以配置文件的形式存储到本地硬盘;
S13:FrameworkHelper类检测本地安装了哪些Cocos 2d-x版本,并将本地已经安装且包含在所述支持版本列表中的Cocos 2d-x版本作为可用的Cocos 2d-x版本。
进一步的,所述Cocos编辑器使用所述可用的Cocos 2d-x 版本进行Cocos 2d-x 版本升级,包括两种类型的操作:
将Cocos编辑器中的资源项目升级为完整项目或升级完整项目中Cocos 2d-x的版本。
更进一步的,所述将Cocos编辑器中的资源项目升级为完整项目,具体为:
服务类使用所选定的Cocos 2d-x版本在另一位置创建一个与资源项目同名的项目,所述同名的项目中包含了由所有需要的Cocos 2d-x版本构成的引擎库文件;
将所述同名的项目中的引擎库文件复制到原有项目的对应目录下,完成后再将所述同名的项目删除。
更进一步的,所述升级完整项目中Cocos 2d-x的版本,具体为:
服务类使用所选定的Cocos 2d-x版本在另一位置创建一个与完整项目同名的项目,所述同名的项目中包含了由所有需要的Cocos 2d-x版本构成的引擎库文件;
用所述同名的项目中的引擎库文件覆盖原有项目的对应目录下的引擎库文件,完成后再将所述同名的项目删除。
优选的,所述升级完整项目中Cocos 2d-x的版本,具体为:
执行命令行工具Console所提供的upgrade命令。
本发明的有益技术效果为:
本发明首先通过获取所有与项目和Cocos编辑器兼容的Cocos 2d-x版本对项目与Cocos编辑器可以使用的Cocos 2d-x进行控制,避免了项目开发过程中Cocos 2d-x 版本不兼容的问题,增强了项目的稳定性;其次,本发明给出了自动升级Cocos 2d-x版本的方法,通过调用由服务类提供的引擎库即可完成Cocos 2d-x 版本的升级,省去了手动更换引擎文件的繁琐,同时降低了技术门槛和差错率。
附图说明
图1是本发明实施例提供的兼容不同Cocos 2d-x版本的方法流程图;
图2是本发明实施例提供的Cocos 2.3.2版本创建项目界面的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用于解释本发明,不能理解为对本发明具体保护范围的限定。
本实施例提供的一种兼容不同Cocos 2d-x 版本的方法,包括如下步骤:
如图1所示,第一步为Cocos编辑器获取可用的Cocos 2d-x 版本。
版本管理的功能代码包含在FrameworkHelper类当中。这个类位于CocoStudio.Projects项目,它主要负责对外提供当前Cocos编辑器所可以使用的Cocos 2d-x版本。Cocos编辑器只能使用由FrameworkHelper所提供的Cocos 2d-x来进行创建项目、升级引擎、打包发布等操作,而FrameworkHelper所提供的Cocos 2d-x版本都是与当前Cocos编辑器相兼容的版本,这样便可以保证在使用Cocos 2d-x的过程中不会出现兼容性的问题。
FrameworkHelper类通过硬编码的方式内置了当前所有兼容的Cocos 2d-x版本号。当Cocos编辑器启动的时候,会把这些版本号作为初始的支持版本列表。因为Cocos 2d-x在Cocos编辑器发布之后还会陆续发布新的版本,只靠硬编码的方式并不能获取到最新发布的Cocos 2d-x兼容版本号。所以当FrameworkHelper类在使用硬编码的版本列表完成了初始化之后,会尝试连接服务器,向服务器请求当前最新的版本列表。当请求成功的时候,FrameworkHelper类便使用从服务器获得的最新的版本列表作为支持版本列表,同时将该支持版本列表以配置文件的形式存储到本地硬盘。这样当电脑处于网络断开的状态下的时候,FrameworkHelper类也可以通过该配置文件获取到正常支持版本列表。
执行完上述步骤后,FrameworkHelper类已经获得了所有支持的Cocos 2d-x版本。之后FrameworkHelper类开始检测本地安装了哪些Cocos 2d-x版本。只有在本地已经安装,且包含在支持版本列表中的Cocos 2d-x版本才是可用的Cocos 2d-x版本。
如图2所示是本实施例提供的Cocos 2.3.2编辑器创建项目界面的截图,图中的下拉框中显示了创建项目时所可以选择的Cocos 2d-x的版本。在本实施例中,Cocos编辑器首先从服务器获取到了它所支持的Cocos 2d-x版本列表,具体列表如下:
<FrameworkVersion="cocos2d-x-3.4"/>
<FrameworkVersion="cocos2d-x-3.5"/>
<FrameworkVersion="cocos2d-x-3.6"/>
<FrameworkVersion="cocos2d-x-3.7"/>
<FrameworkVersion="cocos2d-x-3.7.1"/>
而该实施例的本地只安装了Cocos 2d-x的3.6版本以及3.7.1版本,因此可用的Cocos 2d-x 版本为3.6版本以及3.7.1版本,创建项目时只可以从“无”,“3.6”以及“3.7.1”这三个选项中进行选择,保证了创建的项目以及cocos编辑器与Cocos 2d-x版本的兼容性(如果选择“无”,则创建出来的项目为不带有引擎的资源项目)。
如图1所示,第二步为Cocos编辑器使用所述可用的Cocos 2d-x 版本进行创建项目、Cocos 2d-x 版本升级、打包发布。
所述Cocos编辑器使用所述可用的Cocos 2d-x 版本进行Cocos 2d-x 版本升级,由Modules.Communal.CocosAdapter项目负责,包括两种类型的操作:
将Cocos编辑器中的资源项目升级为完整项目或升级完整项目中Cocos 2d-x的版本。
Cocos编辑器中使用的项目有两种类型,分别是资源项目与完整项目,它们之间的区别在于项目中是否包含了Cocos 2d-x引擎库文件——不包含引擎库文件的项目为资源项目,包含了引擎库文件的项目为完整项目。资源项目可以使用步骤一中所提供的可用的Cocos 2d-x版本来升级为完整项目,这一升级操作的功能由CocosAdapter项目中的Cocos2dxSupplymentServices服务类来提供。
所述将Cocos编辑器中的资源项目升级为完整项目,具体为:
服务类使用所选定的Cocos 2d-x版本在另一位置创建一个与资源项目同名的项目,所述同名的项目中包含了由所有需要的Cocos 2d-x版本构成的引擎库文件;
将所述同名的项目中的引擎库文件复制到原有项目的对应目录下,完成后再将所述同名的项目删除。这样原有的资源项目中便具有了它所需要的引擎库文件,成为了完整项目。
更进一步的,所述升级完整项目中Cocos 2d-x的版本,具体为:
服务类使用所选定的Cocos 2d-x版本在另一位置创建一个与完整项目同名的项目,所述同名的项目中包含了由所有需要的Cocos 2d-x版本构成的引擎库文件;
与升级资源项目时所不同的是,此时完整项目中对应的目录下已经存在了同名的引擎库文件,因此需要用所述同名的项目中的引擎库文件覆盖原有项目的对应目录下的引擎库文件,完成后再将所述同名的项目删除。
实施例二:
实施例一中升级完整项目中Cocos 2d-x的版本,还可以采用如下方法:
Cocos Framework附带有命令行工具Console。在Cocos 2d-x 3.6及之后的版本中,命令行工具Console提供了upgrade命令。执行该命令后,命令行工具Console也会升级完整项目中Cocos 2d-x的版本,即:先在其它位置创建一个新的同名项目,然后将新的同名项目中的引擎库文件复制到原有项目目录下。