最近将一款用CocosCreator2.x编写的微信小游戏《球球要回家》移植到了CocosCreator3.6.2。编程语言也从JavaScript迁移到TypeScript,并成功推出了微信小游戏。但是,在升级过程中,踩了很多坑。一是如何高效地将JS代码翻译成TS代码。另外Creator3.6.2自带的2.x项目升级工具有一个bug,差点让我放弃升级。不过好在遇到的问题都可以通过Cocos论坛和文档来解决。在这里记录一下,希望对你也有帮助。1.将项目升级到2.4.x引擎版本,因为Creator3.x不再支持JavaScript语言,2.4.x最新版本的API接口与3.x类似。因此,我的策略是先将代码移植到2.4.xTypeScript。这一步主要是为了解决一些废弃API的问题。在2.4.10上,已弃用的API不会抛出错误,但会提示您警告。据了解,2.4.x以下的项目95%都可以顺利升级到2.4.5+。2、JS转TS脚本这一步是个人努力。一种是将JS脚本翻译成TS脚本,另一种是在节点上重新挂载新的TS脚本。我的做法是,比如:看到一个脚本叫:GameScene.js,先在旁边生成一个GameSceneTS.ts,根据JS代码的逻辑,按照TS语法重写代码。虽然这是体力活,但是在VSCode中写TS代码还是很享受的,智能提示也很方便。3.将项目引擎升级到3.6.x关键是这一步需要使用Creator3.x提供的升级工具来升级项目。使用升级工具,我们不用重新编辑游戏场景和预制件,重新挂载脚本,可以节省很多时间。新建一个Creator3.x工程,在编辑器主菜单中选择文件→导入CocosCreator2.x工程,如下图:浏览到需要升级的2.x工程目录,出现如下面板会弹出如下:注意:有一个差!我第一次导入2.4.10项目后,发现场景中的Button按钮没有动。为了排除脚本引起的问题,我用2.4.10重建了一个HelloWorld项目,添加了Button按钮,然后导入了3.6.2。这个问题仍然存在。我已经尝试了很多次,但没有解决办法。我会停下来看看导入。面板上的说明,OpenaGithubrepository,是这个2.x导入工具的插件的最新版本。查看README中的更新说明,只是解决了按钮无法点击的问题,修复了其他bug。果断下载插件安装,然后再次尝试使用HelloWorld项目导入3.x引擎。点击按钮解决问题!4.升级3.x脚本代码UI,完美重现...OK组件脚本节点绑定在...OK组件属性,节点引用,组件方法调用都OK!但是此时在游戏中点击按钮没有任何反应。看代码如下:从上图可以看出,升级工具已经注释掉了所有的代码函数体。我们现在要做的就是把所有的函数体一一放好。打开。2.x中使用的cc.xxx已经不能用了,必须在脚本最前面导入import模块://DeconstructtheNodeandSpritevariablesfromtheccmoduleimport{Node,Sprite}from'cc'在使用VSCode写代码时,我们不需要手动将导入的模块一一导入,编辑器会自动添加,见下图:总结从Creator2.x移植3.x的整体过程主要包括以下四个步骤:将项目升级到2.4.10或最新版本;将脚本移植到TypeScript;使用Creator3.x中的2.x项目导入工具(注意使用github上最新版本);修改3.x项目中不兼容2.x代码的相关接口。后续我会分享更多Creator2.x升级到3.x的经验。如果本文对您有用,感谢您的点赞和留言!更多内容请关注公众号:造物主星球游戏开发社区
