首页 > 其他分享 >如何优雅地升级一个Creator 2.x 项目到 3.6.2 ?

如何优雅地升级一个Creator 2.x 项目到 3.6.2 ?

时间:2023-01-10 20:46:23浏览次数:70  
标签:脚本 升级 Creator 代码 优雅 3.6 导入 2.4

最近,我将之前用 Cocos Creator 2.x 写的一个微信小游戏《球球要回家》移植到了 Cocos Creator 3.6.2 上。

编程语言也从 JavaScript 迁移到了 TypeScript,并成功上线微信小游戏。

不过在升级过程中,也踩到不少坑。

一是如何将 JS 代码高效地翻译成 TS 代码。

另外是,我在使用 Creator 3.6.2 自带的 2.x 项目升级工具存在 BUG,差点让我放弃升级。

不过还好,遇到的问题通过 Cocos 论坛、文档都能解决,在此做个记录,希望对你也有所帮助。

file

1. 升级项目到 2.4.x 引擎版本

因为 Creator 3.x 已经不在支持 JavaScript 语言,而且 2.4.x 最新版本的 API 接口与 3.x相近。

所以,我的策略是首将代码移植到 2.4.x TypeScript 上。

这一步,主要是解决一些废弃 API 的问题。

在 2.4.10 上,废弃 API 它不会报错,但会以警告的方式提示你。

据了解 95% 的 2.4.x 以下的项目,升 2.4.5+ 是可以平滑升级的。

2. JS转TS脚本

这一步是个体力活,一是对将 JS 脚本翻译为 TS 脚本,二是将新的 TS 脚本重新挂载节点。

我的做法是,比如:看到有个脚本为:GameScene.js,先在它旁边生成一个 GameSceneTS.ts 照着 JS 代码逻辑,按 TS 语法重写一遍代码。

file

虽然这是个体力活,但是在 VSCode 中写 TS 代码还是很享受的,智能提示非常的方便。

3. 升级项目引擎到 3.6.x

重点来了,这一步需要使用 Creator 3.x 提供的升级工具来升级项目。

使用升级工具,我们可以不必重新去编辑游戏场景和预制体,重新去挂载脚本,能省去不少时间。

新建一个 Creator 3.x 工程,从编辑器主菜单上 文件→导入 Cocos Creator 2.x 项目,看下图:

file

浏览需要升级的 2.x 工程目录,会弹出下面这样一个面板:

file

注意:这里有一个坑点!我最初在导入球球要回家 2.4.10 工程后发现,场景中的 Button 按钮点不动。
为了排除是因为脚本引起的问题,我使用 2.4.10 重新建了一个 Hello World 工程,添加上 Button 按钮,再导入 3.6.2 依然有这个问题,

试了多次无解,我再停下来看导入面板上的说明,打开一个 Github 仓库,是这个 2.x 导入工具的插件最新版本。

file

看 README 中的更新说明,正好解决了按钮不能点击的问题,以及其他 BUG 的修复。

file

果断下载插件安装上,再次尝试使用 Hellow World 工程导入 3.x 引擎 Button 点击问题解决!

4. 升级 3.x 脚本代码

UI 完美再现......OK

组件脚本节点绑定在......OK

组件属性、节点引用、组件方法调用一切 OK!

但是,这时点击游戏中的按钮是没有反应的,看代码如下:

file

从上图可以看到,升级工具将所有代码函数体全部注释起来了,现在要做的就是将所有函数体一个个地放开。

在 2.x 时使用的 cc.xxx 这种写法不能再用了,必须在脚本顶部做导入模块导入:

//从 cc 模块中解构出 Node、Sprite 变量
import { Node, Sprite } from 'cc'

在使用 VSCode 编写代码时,并不需要我们手动一个个敲 import 引入的模块,编辑器会自动添加,看下面:
file

小结

从 Creator 2.x 移植 3.x 的整体过程,主要为下面四步:

  1. 升级项目到 2.4.10 或最新版;
  2. 移植脚本到 TypeScript;
  3. 在 Creator 3.x 中使用 2.x 项目导入工具(注意使用github上的最新版本);
  4. 修改 3.x 项目中不兼容 2.x 的相关接口代码。

后续我还会有更多 Creator 2.x 升级 3.x 的经验分享,如果本文对你有用,感谢点赞留言!

更多精彩请关注Creator星球游戏开发社区

标签:脚本,升级,Creator,代码,优雅,3.6,导入,2.4
From: https://www.cnblogs.com/creator-star/p/17041314.html

相关文章

  • cocos creator教程:框架 - 引导
    【muzzik教程】:框架-引导之前策划给了一个新手引导的需求,有40多步,再用之前那种随便写写的方式肯定不行了,所以我就写了一个初步的引导框架,这里分享给大家实现功能......
  • 如何优雅地校验后端接口数据,不做前端背锅侠
    背景最近新接手了一批项目,还没来得及接新需求,一大堆bug就接踵而至,仔细一看,应该返回数组的字段返回了null,或者没有返回,甚至返回了字符串"null"???这我能忍?我立刻截图发到群......
  • cocos creator教程:框架 - 封装
    【muzzik教程】:框架-封装遇到的问题部分接口/属性不想暴露给外部外部引用方式框架加载方式部分接口/属性不想暴露给外部exportclassprivate_test{ test_b=......
  • cocos creator知识点总结
    1:比较常见的加载一个纹理  bundle.load('imgs/cocos',cc.SpriteFrame),为什么要加载个类型?从直接方面来说的话,没有类型的话,得到的是不唯一东西.举例,一个spine资源......
  • 更优雅的计算方法或接口耗时
    一、背景开发时,记录某方法或任务的执行时间,或者一段代码的执行时间,如果使用System.currentTimeMillis(),很麻烦且不直观。spring-framework和apache-common包,都提供了Stop......
  • 以经典赋能前卫个性 以优雅勾勒智美人生
    近日,福布斯发布了2022年世界最有影响力的女性排行榜,在该排行榜中,排名第一的是欧美委员会主席乌尔苏拉·冯德莱恩(UrsulavonderLeyen),她的长相和气质会让人想起《欲望......
  • osgQt使用(osgQOpenGL版本)OSG3.6.5 VS2019 Qt5.15.2 CMAKE3.24
     Qt5.15.2新建QWidget工程QT新建的去qmake工程的.pro文件设置QT+=coreguigreaterThan(QT_MAJOR_VERSION,4):QT+=widgetsCONFIG+=c++17#Youcan......
  • cocos creator教程:框架 - 音频
    【muzzik教程】:框架-音频此处仅谈思想,代码后续会发布在很多代码框架中、其实audio这一块的逻辑一直都没有更新、永远都只有管理音乐、音效的状态控制在我看来这......
  • cocos creator教程:框架 - 多语言
    【muzzik教程】:框架-多语言此处仅谈思想,代码后续会发布多语言需要解决的问题文本、图片不同语言之间的动态切换多状态节点(不同语言间节点属性可能不同、如位......
  • 如何用python“优雅的”调用有道翻译
    文章目录​​前言​​​​分析​​​​分析url​​​​分析参数01​​​​分析参数02​​​​加密分析​​​​模拟请求​​​​注意点​​​​请求代码​​​​执行结果​......