如何優(yōu)雅地升級(jí)一個(gè)Creator 2.x 項(xiàng)目到 3.6.2 ?

最近竣稽,我將之前用 Cocos Creator 2.x 寫(xiě)的一個(gè)微信小游戲《球球要回家》移植到了 Cocos Creator 3.6.2 上囱怕。

編程語(yǔ)言也從 JavaScript 遷移到了 TypeScript,并成功上線(xiàn)微信小游戲毫别。

不過(guò)在升級(jí)過(guò)程中娃弓,也踩到不少坑。

一是如何將 JS 代碼高效地翻譯成 TS 代碼岛宦。

另外是忘闻,我在使用 Creator 3.6.2 自帶的 2.x 項(xiàng)目升級(jí)工具存在 BUG,差點(diǎn)讓我放棄升級(jí)恋博。

不過(guò)還好齐佳,遇到的問(wèn)題通過(guò) Cocos 論壇、文檔都能解決债沮,在此做個(gè)記錄炼吴,希望對(duì)你也有所幫助。

file

1. 升級(jí)項(xiàng)目到 2.4.x 引擎版本

因?yàn)?Creator 3.x 已經(jīng)不在支持 JavaScript 語(yǔ)言疫衩,而且 2.4.x 最新版本的 API 接口與 3.x相近硅蹦。

所以,我的策略是首將代碼移植到 2.4.x TypeScript 上闷煤。

這一步童芹,主要是解決一些廢棄 API 的問(wèn)題。

在 2.4.10 上鲤拿,廢棄 API 它不會(huì)報(bào)錯(cuò)假褪,但會(huì)以警告的方式提示你。

據(jù)了解 95% 的 2.4.x 以下的項(xiàng)目近顷,升 2.4.5+ 是可以平滑升級(jí)的生音。

2. JS轉(zhuǎn)TS腳本

這一步是個(gè)體力活,一是對(duì)將 JS 腳本翻譯為 TS 腳本窒升,二是將新的 TS 腳本重新掛載節(jié)點(diǎn)缀遍。

我的做法是,比如:看到有個(gè)腳本為:GameScene.js饱须,先在它旁邊生成一個(gè) GameSceneTS.ts 照著 JS 代碼邏輯域醇,按 TS 語(yǔ)法重寫(xiě)一遍代碼。

file

雖然這是個(gè)體力活,但是在 VSCode 中寫(xiě) TS 代碼還是很享受的譬挚,智能提示非常的方便锅铅。

3. 升級(jí)項(xiàng)目引擎到 3.6.x

重點(diǎn)來(lái)了,這一步需要使用 Creator 3.x 提供的升級(jí)工具來(lái)升級(jí)項(xiàng)目殴瘦。

使用升級(jí)工具狠角,我們可以不必重新去編輯游戲場(chǎng)景和預(yù)制體号杠,重新去掛載腳本蚪腋,能省去不少時(shí)間。

新建一個(gè) Creator 3.x 工程,從編輯器主菜單上 文件→導(dǎo)入 Cocos Creator 2.x 項(xiàng)目,看下圖:

file

瀏覽需要升級(jí)的 2.x 工程目錄躏啰,會(huì)彈出下面這樣一個(gè)面板:

file

注意:這里有一個(gè)坑點(diǎn)丑蛤!我最初在導(dǎo)入球球要回家 2.4.10 工程后發(fā)現(xiàn),場(chǎng)景中的 Button 按鈕點(diǎn)不動(dòng)蚂维。
為了排除是因?yàn)槟_本引起的問(wèn)題,我使用 2.4.10 重新建了一個(gè) Hello World 工程,添加上 Button 按鈕灌旧,再導(dǎo)入 3.6.2 依然有這個(gè)問(wèn)題,

試了多次無(wú)解绰筛,我再停下來(lái)看導(dǎo)入面板上的說(shuō)明枢泰,打開(kāi)一個(gè) Github 倉(cāng)庫(kù),是這個(gè) 2.x 導(dǎo)入工具的插件最新版本铝噩。

file

看 README 中的更新說(shuō)明衡蚂,正好解決了按鈕不能點(diǎn)擊的問(wèn)題,以及其他 BUG 的修復(fù)骏庸。

file

果斷下載插件安裝上毛甲,再次嘗試使用 Hellow World 工程導(dǎo)入 3.x 引擎 Button 點(diǎn)擊問(wèn)題解決!

4. 升級(jí) 3.x 腳本代碼

UI 完美再現(xiàn)......OK

組件腳本節(jié)點(diǎn)綁定在......OK

組件屬性具被、節(jié)點(diǎn)引用玻募、組件方法調(diào)用一切 OK!

但是一姿,這時(shí)點(diǎn)擊游戲中的按鈕是沒(méi)有反應(yīng)的补箍,看代碼如下:

file

從上圖可以看到,升級(jí)工具將所有代碼函數(shù)體全部注釋起來(lái)了啸蜜,現(xiàn)在要做的就是將所有函數(shù)體一個(gè)個(gè)地放開(kāi)坑雅。

在 2.x 時(shí)使用的 cc.xxx 這種寫(xiě)法不能再用了,必須在腳本頂部做導(dǎo)入模塊導(dǎo)入:

//從 cc 模塊中解構(gòu)出 Node衬横、Sprite 變量
import { Node, Sprite } from 'cc'

在使用 VSCode 編寫(xiě)代碼時(shí)裹粤,并不需要我們手動(dòng)一個(gè)個(gè)敲 import 引入的模塊,編輯器會(huì)自動(dòng)添加,看下面:


file

小結(jié)

從 Creator 2.x 移植 3.x 的整體過(guò)程遥诉,主要為下面四步:

  1. 升級(jí)項(xiàng)目到 2.4.10 或最新版拇泣;
  2. 移植腳本到 TypeScript;
  3. 在 Creator 3.x 中使用 2.x 項(xiàng)目導(dǎo)入工具(注意使用github上的最新版本)矮锈;
  4. 修改 3.x 項(xiàng)目中不兼容 2.x 的相關(guān)接口代碼霉翔。

后續(xù)我還會(huì)有更多 Creator 2.x 升級(jí) 3.x 的經(jīng)驗(yàn)分享,如果本文對(duì)你有用苞笨,感謝點(diǎn)贊留言债朵!

更多精彩請(qǐng)關(guān)注Creator星球游戲開(kāi)發(fā)社區(qū)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瀑凝,隨后出現(xiàn)的幾起案子序芦,更是在濱河造成了極大的恐慌,老刑警劉巖粤咪,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谚中,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡寥枝,警方通過(guò)查閱死者的電腦和手機(jī)宪塔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)囊拜,“玉大人某筐,你說(shuō)我怎么就攤上這事“保” “怎么了来吩?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蔽莱。 經(jīng)常有香客問(wèn)我弟疆,道長(zhǎng),這世上最難降的妖魔是什么盗冷? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任怠苔,我火速辦了婚禮,結(jié)果婚禮上仪糖,老公的妹妹穿的比我還像新娘柑司。我一直安慰自己,他們只是感情好锅劝,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開(kāi)白布攒驰。 她就那樣靜靜地躺著,像睡著了一般故爵。 火紅的嫁衣襯著肌膚如雪玻粪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,215評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音劲室,去河邊找鬼伦仍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛很洋,可吹牛的內(nèi)容都是我干的充蓝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼喉磁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼谓苟!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起线定,我...
    開(kāi)封第一講書(shū)人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤娜谊,失蹤者是張志新(化名)和其女友劉穎确买,沒(méi)想到半個(gè)月后斤讥,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡湾趾,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年芭商,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搀缠。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡铛楣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出艺普,到底是詐尸還是另有隱情簸州,我是刑警寧澤,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布歧譬,位于F島的核電站岸浑,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏瑰步。R本人自食惡果不足惜矢洲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缩焦。 院中可真熱鬧读虏,春花似錦、人聲如沸袁滥。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)题翻。三九已至揩徊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背靴拱。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工垃喊, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人袜炕。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓本谜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親偎窘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子乌助,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容