Cocos Creator 2.4.7 正式發(fā)布,優(yōu)化編輯器兼容性與穩(wěn)定性
工欲善其事,必先利其器。經(jīng)過(guò)長(zhǎng)時(shí)間的準(zhǔn)備和測(cè)試,Cocos Creator 2.4.7 終于發(fā)布了,感謝所有給予我們寶貴反饋的小伙伴們!在此次更新中,我們對(duì)近期發(fā)現(xiàn)的一些 2.x 相關(guān)問(wèn)題集中進(jìn)行了修復(fù),重點(diǎn)提升了編輯器的穩(wěn)定性、兼容性,建議所有 2.x 用戶升級(jí)。
在 2.4.5 中,我們?yōu)榱思嫒?Mac M1 盡快升級(jí)了編輯器底層的 Electron,導(dǎo)致了開(kāi)發(fā)者的部分插件出現(xiàn)異常,很抱歉給大家造成了不好的體驗(yàn)。針對(duì)有關(guān)問(wèn)題,我們?cè)诮谶M(jìn)行了大量的專項(xiàng)測(cè)試,將兼容性適配代碼集中匯總到了 2.4.7,最終為開(kāi)發(fā)者抹平了 Electron 版本的差異,并且確保不會(huì)引入新的相關(guān)問(wèn)題。
在之后的版本中,不論是 2.x 還是 3.x,我們都將秉持兼容第一的原則,并且持續(xù)驗(yàn)證 Cocos Store 中的插件兼容性,盡可能在基礎(chǔ)設(shè)施變化時(shí)不影響項(xiàng)目、插件的運(yùn)行,減少適配成本,提升升級(jí)體驗(yàn)。
根據(jù)今年 2 月 7 日 3.0 版本正式發(fā)布時(shí)的計(jì)劃,2.4 作為 LTS 版本將在今年繼續(xù)提供缺陷修復(fù)。同時(shí)明年全年,我們還將持續(xù)關(guān)注 2.4 的關(guān)鍵問(wèn)題和重大的平臺(tái)適配問(wèn)題,不定期更新版本,支撐線上項(xiàng)目的安全運(yùn)營(yíng),請(qǐng)大家放心。
再次集中解答一下關(guān)于 3.x 的升級(jí)問(wèn)題:
新項(xiàng)目不再建議基于 2.4,請(qǐng)統(tǒng)一使用 3.x 版本進(jìn)行開(kāi)發(fā),我們會(huì)一如既往地優(yōu)化 3.x 的開(kāi)發(fā)體驗(yàn),關(guān)注輕量級(jí)游戲的包體和效率,支撐好 2D、3D 等不同品類的游戲開(kāi)發(fā)。
當(dāng)前 2.x 項(xiàng)目如果已到開(kāi)發(fā)中期,或者即將上線,不必升級(jí) 3.x。
當(dāng)前 2.x 項(xiàng)目如果還在開(kāi)發(fā)前期,可以評(píng)估是否需要升級(jí) 3.x。如果確認(rèn)一定要升級(jí),可以使用 Creator 提供的?2.x 資源導(dǎo)入工具。此工具將支持舊項(xiàng)目資源完美導(dǎo)入,以及代碼的輔助導(dǎo)入。代碼輔助導(dǎo)入會(huì)把 js 轉(zhuǎn)換成 ts,添加組件類型聲明、屬性聲明及函數(shù)聲明,組件在場(chǎng)景中的引用都會(huì)得到保留,并且函數(shù)內(nèi)部的代碼會(huì)以注釋的形式導(dǎo)入進(jìn)來(lái),可以減輕開(kāi)發(fā)者的升級(jí)難度。詳細(xì)的升級(jí)說(shuō)明請(qǐng)參考[升級(jí)指南]。如果開(kāi)發(fā)者們?cè)谏?jí)中遇到困難,歡迎向我們反饋,我們會(huì)盡力協(xié)助。

升級(jí)編輯器的 Electron 版本到 13.1.4。解決了 Windows 上部分用戶頻繁出現(xiàn)的 WebGL 崩潰問(wèn)題,還支持了 M1(Apple Silicon)的原生 ARM 指令集,建議所有 M1 用戶升級(jí)以獲得更好的性能。詳見(jiàn)升級(jí)說(shuō)明。
升級(jí) Android 工程 Gradle 版本到 4.2.2 版本,詳見(jiàn)升級(jí)說(shuō)明。
修復(fù) Prefab 打開(kāi)時(shí)點(diǎn)擊保存,可能覆蓋場(chǎng)景數(shù)據(jù)的問(wèn)題
修復(fù)編輯器下刷新腳本時(shí),若無(wú)場(chǎng)景切換操作則內(nèi)存會(huì)持續(xù)增長(zhǎng)的問(wèn)題,感謝 isilent
修復(fù)重復(fù)構(gòu)建部分文件 MD5 可能發(fā)生變化的問(wèn)題
修復(fù) 2.4.5 出現(xiàn)的部分第三方插件 ui-section 內(nèi) header 使用 class 注冊(cè)的語(yǔ)法不兼容的問(wèn)題
調(diào)整構(gòu)建時(shí)的資源壓縮操作到拷貝構(gòu)建模板和 `beforeFinish` 事件之后
修復(fù)構(gòu)建后修改腳本并綁定節(jié)點(diǎn)后再次構(gòu)建,運(yùn)行時(shí)綁定內(nèi)容可能為空的問(wèn)題
修復(fù)資源管理器,搜索后鍵盤上下選擇節(jié)點(diǎn)錯(cuò)誤的問(wèn)題
修復(fù)在資源管理器全選 audio-clip、sprite-frame、texture 后拖動(dòng)面板會(huì)報(bào) resize 錯(cuò)誤的問(wèn)題
修復(fù)聚焦場(chǎng)景后,選中節(jié)點(diǎn)無(wú)法刪除的問(wèn)題
修復(fù)預(yù)制體自動(dòng)同步彈窗狀態(tài)無(wú)法保存的問(wèn)題
修復(fù)節(jié)點(diǎn)上 Color 等屬性改動(dòng)后,使用撤銷和重置節(jié)點(diǎn)屬性無(wú)效的問(wèn)題
修復(fù)資源路徑或項(xiàng)目路徑中帶有括號(hào)時(shí),打開(kāi)編輯器出錯(cuò)的問(wèn)題
修復(fù)點(diǎn)擊 Markdown 中的超鏈接失效的問(wèn)題
修復(fù) Prefab 未修改保存后數(shù)據(jù)發(fā)生變化的問(wèn)題
修復(fù)預(yù)加載沒(méi)有下載自動(dòng)圖集的圖片的問(wèn)題
修復(fù)修改父節(jié)點(diǎn)后,節(jié)點(diǎn)的透明度級(jí)聯(lián)計(jì)算錯(cuò)誤的問(wèn)題?[#9322]
修復(fù) Scroll View 同時(shí)到達(dá)水平和豎直邊界時(shí),沒(méi)有正確觸發(fā)事件的問(wèn)題,感謝?zty8023ys?[#9445]
修復(fù) Mask 組件在運(yùn)行時(shí)調(diào)整節(jié)點(diǎn)大小無(wú)效的問(wèn)題?[#9444]
修復(fù) Graphics Bezier 曲線的重繪問(wèn)題,感謝?caogtaa?[#9194]
修復(fù) EditBox 在 PhoneNumber 模式下,鼠標(biāo)滾輪導(dǎo)致數(shù)字為負(fù)數(shù)的情況,感謝?wanghaha1991?[#9138]
從 2.4.7 開(kāi)始,安卓工程的 Gradle Plugin 版本升級(jí)到了 4.2.2。此次升級(jí)調(diào)整了 Android Instant 工程的目錄結(jié)構(gòu),對(duì)普通 Android 工程沒(méi)有影響。我們移除了 js-template-link/frameworks/proj.android-studio/game 與 js-template-default/frameworks/proj.android-studio/game 目錄。game 目錄中的內(nèi)容與 instantapp 目錄已合并進(jìn) instantapp 目錄,如果有對(duì)應(yīng)的模板定制的內(nèi)容,需要遷移至?instantapp 目錄中。
從 2.4.7 開(kāi)始,編輯器底層 Electron 升級(jí)到了 13.1.4,我們?yōu)?Electron 自身的大部分接口變動(dòng)進(jìn)行了兼容處理,例如 BrowserWindow 啟動(dòng)默認(rèn)值、shell.openItem、shell.moveItemToTrash 以及部分 Node.js 環(huán)境內(nèi)的數(shù)據(jù)。但基于 Electron 官方的安全性建議,如果插件使用到了?
,請(qǐng)通過(guò) ?顯式開(kāi)啟 Node.js 支持。如開(kāi)發(fā)者還遇到 2.4.7 引入的其他插件兼容性問(wèn)題也歡迎向我們反饋。
cc.loader?已經(jīng)不建議使用,請(qǐng)使用最新的?cc.assetManager?來(lái)代替,請(qǐng)參考[資源管理模塊升級(jí)指南]子包功能已升級(jí)為 Asset Bundle,請(qǐng)參考[資源分包升級(jí)指南]
調(diào)整了項(xiàng)目構(gòu)建后的目錄結(jié)構(gòu),調(diào)整了?
BuildResults?的 API,如果你使用了編輯器插件獲取編輯器構(gòu)建結(jié)果,請(qǐng)參考[定制項(xiàng)目構(gòu)建流程升級(jí)指南]從 1.10 開(kāi)始廢棄的?
cc.RawAsset?已被正式移除,請(qǐng)使用?cc.Asset?代替。由于 2.4 不再兼容原有 1.x 項(xiàng)目中對(duì) RawAsset 類型的歷史遺留用法,建議所有要升級(jí)到 2.4 的項(xiàng)目特別是從 1.9 版本一路升級(jí)上來(lái)的項(xiàng)目,先在任意的 1.10 ~ 2.3 版本中對(duì)編輯器編譯代碼時(shí)輸出的所有警告或報(bào)錯(cuò)都正確處理完畢,再升級(jí)到 2.4。cc.Color.fromHex?已被廢棄,請(qǐng)使用?cc.Color.fromHEX?接口。
Effect 中的?
CCTexture2D,CCTexture2DRGB?方法已被廢棄,請(qǐng)改用?CCTexture,CCTextureRGBVec3.FRONT已被廢棄,請(qǐng)改用Vec3.FORWARD?
從 < 2.3.0 版本升級(jí)
如果是 Android 平臺(tái)單獨(dú)使用的代碼請(qǐng)放入? app/src?目錄, ?單獨(dú)使用的第三方庫(kù)請(qǐng)放入?app/libs?目錄。如果是 Android Instant 單獨(dú)使用的代碼和第三方庫(kù)請(qǐng)分別放入? game/src,?game/libs?目錄。如果是 Android 和 Android Instant 共用的代碼和第三方庫(kù),請(qǐng)分別放入? proj.android-studio?根目錄底下的 ?src?目錄和?libs?目錄。proj.android-studio?根目錄底下?jni/CocosAndroid.mk?,?jni/ CocosApplication.mk,主要用于配置引擎相關(guān)的配置,開(kāi)發(fā)者的配置,建議 Android 放到?app/jni/Android.mk?和?app/jni/Application.mk中,Android Instant 請(qǐng)放入?game/jni/Android.mk?和?game/jni/Application.mk?中。
assembleRelease/Debug,編譯 Android Instant 時(shí)會(huì)執(zhí)行?instant:assembleRelease/Debug。cc.audioEngine.pause()/resume()?之類的音頻操作,可能會(huì)和引擎默認(rèn)行為沖突。如果有遇到相關(guān)的音頻問(wèn)題,只需移除相應(yīng)的定制代碼即可。從?2.0 - 2.3.0 版本升級(jí)
從 < 2.2.0 版本升級(jí)
cc.Node?必須通過(guò)?destroy()?釋放,否則引擎無(wú)法知道何時(shí)回收這類節(jié)點(diǎn)的內(nèi)存,會(huì)導(dǎo)致內(nèi)存泄露。如原先手動(dòng)從場(chǎng)景中移除的節(jié)點(diǎn),在不需要用到的時(shí)候也需要統(tǒng)一?
destroy():
//?假設(shè)?testNode?是場(chǎng)景中的某個(gè)節(jié)點(diǎn),若之前被手動(dòng)移出場(chǎng)景了,如testNode.parent = null;// 或者testNode.removeFromParent(true);// 或者parentNode.removeChild(testNode);// 若往后 testNode 還會(huì)再次用到,則無(wú)需手動(dòng) destroy 該節(jié)點(diǎn)// 否則應(yīng)該手動(dòng)調(diào)用testNode.destroy();
如原先通過(guò)?
cc.removeSelf?這個(gè) action 銷毀節(jié)點(diǎn),請(qǐng)改為使用?cc.destroySelf如原先通過(guò)?
cc.NodePool?管理節(jié)點(diǎn),則不受影響
從 < 2.0 版本升級(jí)



