由于cocos2dx整套系统包含c++引擎、cocostudio、lua、javascript等许多内容,又分为2.0、3.0两套差别较大的版本,其中一种内容修改升级后,另外一部分没有及时更新上,就导致出现各种怪异的问题。
最近在使用最新的quick cocos3.3+cocostudio2.15+cocos ide1.2运行一个我以前开发的小程序时,发现载入csb格式的文件程序会直接崩溃。而用cocostudio新开发的一个最简单的csb文件同样会导致程序载入崩溃。windows和mac都有类似的问题。
经过研究,发现cocostudio从2.1正式版开始,csb格式从protobuffer改为flatbuffer,C++引擎应当同步更新到3.4版了,但是quick cocos却没有及时跟上,仍然采用3.3的引擎,导致解析错误。在把cocostudio各版本都测试过的情况下,发现只有2.0.6版和2.1beta版才能使quick cocos3.3工作正常。
另外,cocos ide1.2版同样和quick cocos3.3版有一些不兼容的地方,也需要特殊处理一下。
综合上面各种情况,采用下面的解决方法
1.使cocos ide 1.2可以正确的运行quick cocos 3.3的工程项目
1)安装cocos ide 1.2 32位版
2)安装quick cocos 3.3正式版,用它创建工程
3)在cocos ide中导入工程
4)运行一次,有可能启动不了
5)用cocos ide创建一个quick cocos工程,把该工程目录中的.settings文件夹复制到原有工程中(Mac机下是隐藏文件)
6)重启cocos ide,原有工程即可运行
备注:因为用cocos ide 1.2创建的quick项目加载所有版本的csb文件都会出错,所以要采用quick cocos3.3直接创建项目,然后cocos ide导入项目的方法,如果不使用cocos ide开发就可以跳过这步
2.把原有的cocostudio工程转为2.0.6或2.1beta的版本发布
1)安装cocostudio 2.0.6或2.1beta
2)将原有cocostudio工程加载到cocostudio 1.6或2.1beta重新发布
3)把发布的内容放到工程的资源目录下
这样就可以正确运行了
此外,我用Mac下的cocostudio 2.1beta转换老的工程生成csb后仍然崩溃,但是直接重新建项目发布csb是正确的,估计是cocostudio转换的bug。最后把window下面转换好的csb文件直接复制到mac上正确运行。