Cocos Creator 2.4.4 正式版來了,在 3.0 preview 版本發布后,引擎組正在全力攻堅 3.0 版本,希望能夠統一 2D 游戲與 3D 游戲開發流程,提供更多更強大的功能特性。除此之外,引擎組將持續對 2.x 版本進行維護與優化,這次推出的 2.4.4 版本,支持了字節跳動小游戲子包功能,優化了運行時與開發過程,修復了 2.4 以來的相關問題,歡迎 2.x 用戶進行升級與體驗!
What’s New
- 支持字節跳動小游戲子包功能
字節跳動小游戲正式支持子包功能,這將為開發者提供更多的發揮空間,Creator 也在第一時間開通對子包功能的支持。

Improvement
- 優化原生 ttf 字體渲染[#2874]
- 首場景分包與內置資源分包默認合并所有 JSON,提升加載速度
- 在 MissingScript 組件上顯示腳本信息,便于定位出問題的腳本
- 更新 TypeScript 版本到 4.1.3
- 原生平臺 XMLHttpRequest 支持 HEAD 請求類型[#3093]
- 優化運行時計算材質 hash 值的消耗,感謝 大城小胖,[#7316]
- Android 構建支持 gradle 5.x 版本[#3162]
Engine
- [ASSET]修復構建后運行,預制體引用計數不準確的問題
- [ASSET]修復加載資源時傳入 maxRetryCount 參數無效的問題[#7689]
- [ASSET]修復預加載圖片無效的問題[#7581]
- [ASSET]修復子包中的 Prefab 被主包復用時,運行時有可能導致組件腳本丟失的問題[#8001]
- [PARTICLE]修復粒子系統顏色變化精度錯誤的問題,感謝 caogtaa,[#7532]
- [PARTICLE]修復粒子組件替換 plist 文件時渲染貼圖沒刷新的問題,[#6994]
- [TILEDMAP]修復 Tiledmap 透明度不正確的問題[#7898]
- [TILEDMAP]修復 Tiledmap 未激活節點被渲染的問題[#7898]
- [SPRITE]修復自動圖集勾選 Allow Rotation 后 Sprite 顯示錯誤的問題[#7501]
- [SPRITE]修復 Sprite 使用 Mesh 模式不支持 flipX 與 flipY 的問題[#7407]
- [LABEL]修復 Label 組件使用 BMFont 后切換 active 會出現黑塊的問題[#7492]
- [PHYSICS]修復節點下同時存在剛體節點和非剛體節點時,非剛體節點不會跟隨父節點移動的問題[#7455]
- [MASK]修復節點加入到節點樹之前,增加 Mask 組件報錯的問題[#7429]
- [GRAPHICS]修復 Graphics 組件在繪制過程出現突刺的問題,[#7780]
- [ANIMATION]修復當動畫未播放時設置 sample 與 setCurrentTime 無效的問題[#7943]
Native
- 修復原生平臺繪制 Graphics 頂點達到一定數量后無法繼續畫圖的問題[#2884]
- 修復修改 Label 文本時,節點 size 沒有變化的問題[#2834]
- 修復 Spine 導出圖集時選中 忽略空白圖片 導致解析 .skel 二進制文件失敗的問題[#2813]
- 修復原生平臺混合參數不生效的問題[#7839]
- 修復原生平臺 rayMesh 始終返回 infinity 的問題[#7795]
- 修復原生平臺 Sprite 使用 Mesh 模式渲染錯誤的問題[#362]
- 修復原生平臺 3d 節點 Mask 組件渲染異常的問題[#358]
Mini Game
Web
Editor
- 修復自動同步的預制關聯根節點時的報錯
- 修復導入錯誤的 JSON 文件,編輯器無響應的問題
- 修復嵌套 prefab 刪除子節點后,保存失效的問題
- 修復層級管理器上搜索 uuid 后,節點無法變化層級的問題
- 修復命令行構建原生平臺,MD5Cache 選項無效的問題
- 修復預覽時,引擎 sourcemap 錯誤的問題[#7609]
- 修復編輯動畫的曲線會出現無效的問題
- 修復原生平臺 SpriteFrame 的 json 文件無法合并的問題
- 修復 Prefab 資源設置為 sync 模式時無法保存子節點的問題
- 修復構建后的文件 hash 值發生改變的問題
- 修復使用導出功能,材質和 FBX 沒有導出依賴紋理的問題
- 修復構建小米時,webp 文件無法打包的問題
升級提示
Cocos Creator 對項目的升級操作是不可逆的,請在升級前提交或備份舊版項目。絕大多數項目通常都能自動升級,但因為項目難免存在特殊性,開發者應該根據項目自身需求,提前對新版本引擎進行試用和評估。此外,出于穩定性考慮,建議即將上線或已上線的項目謹慎升級。以下是升級說明,如果開發者們在升級中遇到困難,歡迎向我們反饋,我們會盡力協助。
從 < 2.4.0 版本升級
- cc.loader 已經不建議使用,請使用最新的 cc.assetManager 來代替,請參考 資源管理模塊升級指南
- 子包功能已升級為 Asset Bundle,請參考 資源分包升級指南
- 調整了項目構建后的目錄結構,調整了 BuildResults 的 API,如果你使用了編輯器插件獲取編輯器構建結果,請參考 定制項目構建流程升級指南
- 從 1.10 開始廢棄的 cc.RawAsset 已被正式移除,請使用 cc.Asset 代替。由于 2.4 不再兼容原有 1.x 項目中對 RawAsset 類型的歷史遺留用法,建議所有要升級到 2.4 的項目特別是從 1.9 版本一路升級上來的項目,先在任意的 1.10 ~ 2.3 版本中對編輯器編譯代碼時輸出的所有警告或報錯都正確處理完畢,再升級到 2.4。
- cc.Color.fromHex 已被廢棄,請使用 cc.Color.fromHEX 接口
從 < 2.3.3 版本升級
- Effect 中的 CCTexture2D,CCTexture2DRGB 方法已被廢棄,請改用 CCTexture,CCTextureRGB
- Vec3.FRONT 已被廢棄,請改用 Vec3.FORWARD
從 < 2.3.0 版本升級
從 2.3.0 開始,定制安卓原生工程時,需注意 Android 與 Android Instant 使用了同一個構建模板
- 如果是 Android 平臺單獨使用的代碼請放入 app/src 目錄, 單獨使用的第三方庫請放入 app/libs 目錄。
- 如果是 Android Instant 單獨使用的代碼和第三方庫請分別放入 game/src, game/libs 目錄。
- 如果是 Android 和 Android Instant 共用的代碼和第三方庫,請分別放入 proj.android-studio 根目錄底下的 src 目錄和 libs 目錄。
- proj.android-studio 根目錄底下 jni/CocosAndroid.mk , jni/ CocosApplication.mk,主要用于配置引擎相關的配置,開發者的配置,建議 Android 放到 app/jni/Android.mk 和 app/jni/Application.mk中,Android Instant 請放入 game/jni/Android.mk 和 game/jni/Application.mk 中。
此外,在 Cocos Creator 編譯 Android 時會默認執行 assembleRelease/Debug,編譯 Android Instant 時會執行 instant:assembleRelease/Debug。
如自定義了音頻前后臺切換時的暫停邏輯,升級到 2.3.0 后請移除
目前 Creator 游戲在所有平臺上前后臺互相切換時,都會在內部自動暫停和恢復音頻。 如果開發者之前有對這一塊進行過定制,監聽并執行了 cc.audioEngine.pause()/resume() 之類的音頻操作,可能會和引擎默認行為沖突。如果有遇到相關的音頻問題,只需移除相應的定制代碼即可。
從 2.0 – 2.3.0 版本升級
從 2.3.0 開始,Canvas 組件不再負責將 Canvas 節點尺寸設為屏幕大小,此行為將結合 Widget 組件實現。為保證兼容性,2.0 項目升級后,Canvas 所在節點會自動添加 Widget 組件。(從 1.x 項目升級無此問題)
從 < 2.2.0 版本升級
從 2.2.0 開始,我們強化了內存管理機制,現在要求用戶通過代碼動態創建且獨立于場景節點樹的 cc.Node 必須通過 destroy() 釋放,否則引擎無法知道何時回收這類節點的內存,會導致內存泄露。
- 如原先手動從場景中移除的節點,在不需要用到的時候也需要統一 destroy():
// 假設 testNode 是場景中的某個節點,若之前被手動移出場景了,如
testNode.parent = null;
// 或者
testNode.removeFromParent(true);
// 或者
parentNode.removeChild(testNode);
// 若往后 testNode 還會再次用到,則無需手動 destroy 該節點
// 否則應該手動調用
testNode.destroy();
- 如原先通過 cc.removeSelf 這個 action 銷毀節點,請改為使用 cc.destroySelf。
- 如原先通過 cc.NodePool 管理節點,則不受影響。
從 2.2.0 開始,我們不再建議你使用節點的 Skew 功能。Skew 通常用作在 2D 引擎中模擬 3D 效果,隨著 Cocos Creator 對 3D 節點的深入支持,Skew 效果已經完全可以由 3D 節點來實現。所以為了統一使用體驗,進一步優化引擎底層實現,我們廢棄了 Skew 屬性。不過我們依舊會保留一段時間內的向下兼容,開發者可在舊項目中延續原有做法。后續我們將進一步完善兼容方式和升級案例,擇機正式移除 Skew 功能。
從 < 2.0 版本升級
打開 1.x 項目的話,場景等所有資源將會自動升級,代碼中的廢棄接口從 2.3.3 開始將會在保持兼容的基礎上同步輸出報錯。升級方式可參考《1.10 資源升級指南》和《2.0 升級文檔》進行調整。