Cocos Creator 2.4.0 Preview 現已推出

從 2.4.0 進行公測以來,我們收集到許多開發者的意見和建議,這些反饋給予了我們方向,讓我們不斷地完善和改進。在此,感謝所有參加測試的開發者們。今天,我們彙集了所有的改進,提前放出較爲穩定的預覽版本

這個版本包含了許多新的功能與更新,如資源管理系統重構、正式支持了社區裏呼聲很高的 Asset Bundle、並優化了原生上 Label 渲染的性能、優化 Graphic 渲染效果等等。

爲了確保此版本能更好地服務於大家的項目,我們強烈建議所有計劃升級到 2.4 的項目在備份好原有工程後升級試用。只需要在 Cocos Dashboard 中添加新編輯器,就可以找到 Cocos Creator 2.4.0-preview。如果在升級過程中遇到任何問題,可戳文末“閱讀原文”,前往論壇文檔向我們反饋喔。

以下是 Cocos Creator v2.4.0 Preview 完整更新說明。爲保證閱讀體驗,部分[參考鏈接]統一放在文末,更多詳細信息請查看論壇文檔。

 What's new

  • 增加 cc.AssetManager 模塊用於管理資源,包括資源的加載、預加載、自動釋放等。文檔請參考 [Asset Manager] 和 [動態加載]

  • 正式支持 Asset Bundle,提供了更強大的遠程資源加載能力、子項目動態加載能力,並進一步減小了首包的大小。文檔請參考 [Asset Bundle] 和 [加載 Asset Bundle]

  • 小遊戲平臺支持首場景分包功能

  • 增加 CCSafeArea 組件 [#6182]

  • 支持直接導入 gltf 數據

  • 增加 Label 的混合選項 [#6632]

 Improvements

  • 升級 TypeScript 的版本到 3.9.2

  • 原生平臺上使用 FreeType 優化 Label 渲染性能 [#2125]

  • 編輯器屬性面板支持拖拽數組賦值

  • 完善 Graphic 的抗鋸齒效果 [#6474]

  • 增加構建壓縮紋理緩存功能

  • 支持預覽時進行模塊剔除

  • 支持設置預覽端口

  • 優化 2D 粒子系統 free 和 relative 模式的性能 [#6236]

  • 優化 ToggleContainer 獲取 toggleItems 效率 [#6569]

  • 完善原生熱更新支持 [#2312]

  • 原生桌面平臺構建時可設置窗口大小

  • 提升 WebSocket 帶寬 [#2353]

  • SpriteFrame 增加 None Trim 類型,快速設置無裁剪

  • 支持導入 Creator 3D 生成的材質文件

  • 支持其他小遊戲平臺的壓縮紋理

  • 升級 v8 版本到 8.0.426.16 [#2224]

  • 完善 jsb 的代碼提示 [#290]

Engine

  • 修復 cc.easeBackOut 在 time 爲 0 時返回值不正確的問題,[#6728],感謝 @chen-gaoyuan

  • 修復 number 模式下,EditBox.maxLength 屬性不生效的問題 [#6725]

  • 修復 Node.walk 遍歷錯誤的問題 [#6710]

  • 修復調用 cc.dynamicAtlasManager.showDebug 報錯的問題 [#6697]

  • 修復貼圖設置爲預乘後,DragonBone 與 Spine 渲染錯誤的問題 [#6696],感謝 @大城小胖

  • 修復 onLoad 中設置節點的 size 無效的問題 [#6688]

  • 修復 effect 中 cc_matProj 錯誤的問題 [#6653]

  • 修復 EditBox 在 ScrollView 裏滾動視圖時,沒辦法更新位置的問題 [#6634]

  • 修復按鈕禁用狀態下的材質會將材質重置回默認材質的問題 [#6562]

  • 修復 DragonBone 在銷燬場景時一直報錯的問題 [#6553]

  • 修復渲染單個 Camera 陰影錯位的問題 [#6477]

  • 修復 BMFont 配置數據不存在時的報錯 [#6472]

  • 修復開啓預乘後,透明度無效的問題 [#6451]

  • 修復 Camera.render() 渲染兩次的問題,[#6355],感謝 @大城小胖

  • 修復 2d 粒子系統 relative 模式,節點旋轉時,粒子跟隨的問題 [#6236]

  • 修復 Tiled Map 渲染順序可能錯誤的問題 [#6284]

  • 修復 Tiled Map 隱藏的圖像還是會渲染的問題 [#6309]

  • 修復 Android 9,Android 10 版本號檢測失敗的問題 [#6466]

  • 修復 Spine 紋理使用壓縮紋理後渲染錯誤的問題 [#6483]

  • 修復 Spine 貼圖可能渲染錯誤的問題 [#6584]

  • 修復調用 Texture2D.setPremultiplyAlpha 之後圖片翻轉的問題 [#6602]

 Native

  • 修復屏幕翻轉後,節點縮放不正確的問題 [#6689]

  • 修復安卓原生 JniHelper 不是線程安全的問題 [#2457]

  • 修復 unzip 不是線程安全的問題 [#2131],感謝 @benloong

  • 修復安卓 EditBox 的完成按鈕被虛擬導航欄遮擋的問題 [#2426]

  • 修復 Spine 節點在 iOS 上無法獲取節點大小的問題 [#273]

  • 修復原生 Effect 中 cc_time 錯誤的問題 [#6586]

  • 修復 iOS 音頻播放可能崩潰的問題 [#2358]

  • 修復節點旋轉計算錯誤的問題 [#2361]

  • 修復設置 Label.string 時編碼錯誤導致崩潰的問題 [#2395]

  • 修復遊戲退出時出現報錯 [#2406]

  • 修復屏幕旋轉後,輸入框會將視圖上推的問題 [#2415]

  • 修復 Spine 3.6.53 版本導出的 JSON 文件裏的路徑動畫解析失敗的問題 [#2413],感謝 @laomoi

  • 修復 Android 上重力感應錯誤的問題 [#2231]

  • 修復 Tiled Map 當節點挪動到沒有地塊信息的位置時,不會被渲染的問題 [#2283]

  • 修復原生 WebSocket 接口與 Web 不一致的問題 [#2297]

  • 修復調用 Camera 的 render 方法,會導致 Spine 加速播放的問題 [#258]

 Web

  • 修復 iOS Web-Mobile 摘下耳機後音頻無法播放的問題 [#6730]

  • 修復 WebView 透明度在 iOS 上錯誤的問題 [#6717]

  • 修復 iOS 瀏覽器上,輸入中文後,無法再輸入英文的問題 [#6631]

 Mini Game

  • 修復微信小遊戲 WebSocket 發送 Uint8Array 數據報錯的問題 [#115]

  • 修復音頻意外中斷時無法自動恢復播放的問題 [#118]

  • 修復 PC 微信數據開放域無法運行的問題

 Editor

  • 修復 Sprite Editor 保存和還原狀態不對的問題

  • 修復在動畫編輯狀態下,無法重命名不在編輯的動畫剪輯的問題

  • 修復增加 Spine 資源後,編輯器無法識別出來的問題

  • 修復用戶插件重啓後,編輯器可能無法打開的問題

  • 修復多次調用 getNativeAssetPaths 返回值錯誤的問題

  • 修復腳本重命名後加載腳本失敗的問題

  • 修復點擊圖集會出現 width 和 height 報錯的問題

  • 修復使用自動圖集圖片可能失真的問題

  • 修復導入某些圖片導致資源面板錯誤的問題

  • 修復 Prefab 編輯模式無法通過 delete 鍵刪除節點的問題

  • 修復勾選 Filter Unused Resources 在圖集沒有被導出時無效的問題

  • 修復 effect 中定義宏的取值範圍無效的問題 [#6616]

  • 修復動畫編輯器設置 CircleCollider.offset 屬性異常的問題 [#6600]

  • 修復還原上次保存無效的問題

  • 修復設置預覽瀏覽器無效的問題

 Known Issues

  • 暫不支持多開編輯器

 升級提示

Cocos Creator 對項目的升級操作是不可逆的,請在升級前提交或備份舊版項目。絕大多數項目通常都能自動升級。但因爲項目難免存在特殊性,開發者應該根據項目自身需求,提前對新版本引擎進行試用和評估。

此外,出於穩定性考慮,建議即將上線或已上線的項目謹慎升級。以下是升級說明,如果開發者們在升級中遇到困難,歡迎向我們反饋,我們會盡力協助。

從 < 2.4.0 版本升級

  • cc.RawAsset 的支持已被移除,請使用 cc.Asset 代替

  • cc.loader 已經不建議使用,請使用最新的 cc.assetManager 來代替,請參考 [資源管理模塊升級指南]

  • 子包功能已升級爲 Asset Bundle,請參考 [資源分包升級指南]

  • 如果你使用了編輯器插件獲取編輯器構建結果,請參考 [定製項目構建流程升級指南]

從 < 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 時會執行 in stant: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 升級文檔]進行調整。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章