• hero-image
    2022.11.04

    V3.6.2

    發布時間: 2022.11.04

    重點更新

    • 優化原生 Spine/DragonBones 性能 #12788。我們在 3.6.2 重點優化了原生上 Spine 的運行性能。在 iOS 較低端設備上最大達到了 40% 以上的性能提升。在 Android 平臺也有較為可觀的性能提升。
    • [實驗性功能] 我們在 Web-Desktop 平臺新增了基于 wasm 的面向未來的渲染后端——WebGPU(Chromium 105)。未來會基于 WebGPU 后端逐步接入如 ComputeShader 等功能特性,對 Web 平臺的渲染能力提升具有重要作用。WebGPU 相關介紹可以參考 https://www.w3.org/TR/webgpu/

    Engine

    • 從材質選項中移除 Batching 合批(不推薦使用此合批模式,請改用 Instancing 合批)#12892
    • 支持 Spine/Dragonbones 組件合批渲染功能 #12847
    • 修復 Spine 二進制格式資源解析錯誤 #12894
    • 修復 Instancing 合批相關的一些錯誤 #12786
    • 更新默認天空盒素材 #12917
    • 修復 Android okhttp 沒有主動調用 close 的問題 #12783
    • 修復請求下載資源時無法解析 URL 中空格的問題 #12826
    • 添加設置 uniform 時對 FLOAT3 形式 Color 的兼容 #12962
    • 修復原生端設置字體時對特殊名稱(如 OpenSans-BoldItalic)的解析問題 #13048
    • 修復 Graphics 組件內凹形狀錯誤的問題 #13037

    Editor

    • 修復 Camera 組件 Visibility 屬性在 Inspector 中不加載用戶自定義 Layers 的問題
    • Bundle 名稱的界面校驗規則調整為僅支持數字字母下劃線減
    • 修復復制粘貼相機節點報錯問題
    • 修復從動畫編輯切換到預制體編輯時預制體數據異常問題 #12752
    • 修復場景編輯的正交視角效果錯誤問題
    • 修復自定義腳本中的屬性引用的子類是預制體子節點時不能正常保存的問題
    • 修復編輯器預覽暫停時,選中相機時的小窗分辨率不符合設置的問題
    • 修復構建插件 asset-handler 機制失效
    • 修復修改偏好設置->默認圖片資源導入類型配置后報錯

    Known Issues

    • 在 WebGPU 后端使用帶半透明度像素的圖片時可能出現預乘透明通道的問題,可以通過調整材質混合模式臨時解決
    • 在 WebGPU 后端 CopyTextureToBuffers 接口目前暫不支持
    2022.09.23

    V3.6.1

    發布時間: 2022.09.23

    3.6.0 發布后,我們收到了不少開發者的反饋,非常感謝大家一如既往的支持。3.6.1 對這些問題集中進行了修復,提升了用戶體驗,也對一部分性能進行了優化,建議所有 3.x 用戶升級。

    除此之外,Cocos Creator 的官方 XR?內容開發插件?Cocos?CreatorXR?也已適配 3.6.1。它在底層通過支持 OpenXR 標準協議來抹平不同 XR 設備之間的差異,可以一站式對創作內容進行開發并發布到不同的 XR 設備中而無需去適配不同設備的 I/O 項;中層封裝了一系列不同功能的 XR 中間件來提供 XR 內容創作支持,并支持用戶自定義擴展組件內容;上層基于 Cocos Creator 面板擴展出多種形式的 XR 功能菜單和組件樣式,為用戶提供更為便利的內容創作界面。開發者可通過 Dashboard 新建 3.6.1 項目,選擇對應的模板/案例來自動安裝 Cocos CreatorXR 插件,詳見 Cocos CreatorXR 介紹。

    下面是這次更新的主要內容:

    Engine

    • 增加了原生平臺保存圖片數據的功能 #12503
    • iOS 文本支持陰影、斜體 #12421  #12382
    • Windows 端現在可以正常播放 wav 音頻
    • 優化部分支持 JIT 平臺的動畫系統性能 #12308
    • 優化了 iOS 平臺的部分 UI 性能 #12390
    • 重構 Mask 組件,不再繼承而是持有一個渲染組件,避免在 3.6.0 版本對子節點的侵入操作 #12636
    • 優化原生 Websocket onclose API 與 web 標準保持一致 #12370
    • 為原生平臺上的數學庫添加 approxEquals 方法,用于判斷是否近似相等  #12610
    • 優化原生平臺上 JSBClassType::findClass 的效率 #12548
    • Android 減少非必要的第三方庫連接, 包體最多減少1.4M #12537
    • 修復 iOS 多任務下載時造成的中斷#12743
    • 修復解析 HttpRequestHeader 時可能出現的空格未修剪問題#12757
    • 修復裁剪依賴模塊時可能造成的資源丟失問題(如裁剪2d模塊造成的particle-2d模塊資源丟失)#12602
    • 修復 tiledtile 移動無效的問題 #12377
    • 修復 3.6.0 版本 spine/dragonbones 功能裁切問題 #12605
    • 優化 spine 內存使用 RGBA8 顏色格式#12619
    • 各向異性材質參數可以對接 Substaince 等材質庫#12371#12376
    • 修復 Android 平臺上 Downloader 連接超時設置錯誤的問題 #12642
    • 修復原生平臺上 jointTexture 配置無效的問題 #12639
    • 修復原生平臺上 mesh.minPosition/maxPosition 返回的不是 Vec3 類型的問題 #12628
    • 修復原生平臺上 Node::isChildOf 觸發崩潰的問題 #12493
    • 修復原生平臺上 DEBUG 模式下 ValueArrayPool::get 函數可能觸發斷言的問題 #12499
    • 修復 Windows 平臺工程路徑包含空格導致 Android 構建報錯的問題 #12754
    • 修復 Fog 和 Debug View 的一些顯示問題 #12571#12343
    • 修復安卓平臺遇到的音頻卡頓問題 #12589
    • 修復 AudioSource 切換 clip 時的內存泄漏 #12592

    Editor

    • 支持 tif 和 tiff 格式圖片
    • 支持 Windows 構建進度同步顯示在任務欄
    • 允許腳本內數組屬性的修飾器影響子元素
    • 支持 Marionette 拖動 transition 對 priority 進行排序
    • 優化動畫編輯器事件處理,函數名不能為空
    • 支持命令行構建使用界面預先配好的配置
    • 支持偏好設置 - 自定義引擎設置項目中的相對路徑
    • 優化場景編輯器啟動流程,加快啟動速度
    • 當 png/jpg/webp 圖片壓縮質量設為 100 或者壓縮后大小超過原圖時將會直接使用原圖
    • 修復編輯 SpriteFrame 后,場景內的 Sprite 可能不渲染的問題
    • 修復 Prefab 內修改 scale 無法在場景內實時生效的問題
    • 修復構建 onBeforeMake 和 onAfterMake 回調不觸發的問題
    • 修復動畫編輯器,使用節點過濾功能后節點顯示異常的問題
    • 修復將子節點掛載到其他節點后,刪除父節點的時候場景數據會有殘留的問題
    • 修復腳本內使用 SpriteFrame 資源的時候 name 可能丟失的問題
    • 修復 webp 格式導入成 cube 后,生成的文件擴展名錯誤的問題
    • 修復場景 "create-component" 消息接口無法接收組件名字的問題
    • 修復 ui-asset / ui-component / ui-node missing 狀態顯示不正確的問題
    • 其他編輯器細節體驗完善

    Known Issue

    • 升級到 3.6.1 后,L10n 做為實驗性功能還需啟用一個外部插件才能正常使用,如有需要請移步論壇帖 3.6.1 L10n 安裝補丁 下載插件。
    2022.08.31

    V2.4.10

    發布時間: 2022.08.31

    2.4.10 對近期發現的一些 2.x 相關問題集中進行了修復,重點提升了編輯器及引擎的穩定性,解決了一些原生移動平臺相關問題,建議所有 2.x 用戶升級。此版本未對項目和插件的兼容性造成破壞,大家可參照 2.4.7 的升級說明進行更新。

    根據 3.0 版本正式發布時的計劃,我們仍會在 2022 年繼續提供關鍵缺陷修復。這些修復將只圍繞穩定性和可用性進行優化,因此不再建議新用戶或者新項目選擇 2.4,請統一使用 3.x 版本開發。

    Editor

    • 修復動畫編輯器對 RichText 進行編輯后退出會出現報錯的問題
    • 修復導出資源時,二級文件夾的 meta 文件存儲位置錯誤的問題(感謝大城小胖)
    • 修復文件夾配置的 bundle 優先級屬性的數字類型錯誤的問題(感謝大城小胖)
    • 完善 Mac 構建原生平臺所需的 Python 2.x 安裝提示
    • 修復編輯器屬性面板中幫助文檔鏈接失效的問題

    Engine

    • 修復物理引擎多邊形組件碰撞,會出現報錯的問題 [#10888]
    • 修復 Tween 停止后,內部數據未釋放的問題 [#11360](感謝大城小胖)
    • 修復 Label 和粒子節點禁用時,進入到動畫編輯后組件啟用狀態錯誤的問題 [#12384]
    • Director.EVENT_BEFORE_UPDATE、Director.EVENT_AFTER_UPDATE、Director.EVENT_AFTER_DRAW 事件,額外添加 deltaTime 參數 [#11359](感謝大城小胖)
    • 優化 Motion Streak 的視覺效果,修復拖尾初始化坐標同時避免拖尾效果延遲一幀 [#10982]
    • 完善 creator.d.ts 中部分接口的定義 [#11981]

    Native

    • 修復進入后臺時音頻加速的問題 [#4288]
    • 修復 Android 平臺跳轉到廣告時的崩潰問題 [#4289]
    • 修復在 Android 7 版本之后,獲取語言錯誤的問題 [#4290]
    • 修復原生 WebSocket 調用 Close 導致游戲崩潰的問題 [#4291]
    2022.08.17

    V3.6.0

    發布時間: 2022.08.17

    在 Cocos 團隊內部,我們一直將 3.6 作為 3.0 的合并版本之后最重要的里程碑版本來看待,一方面這個版本的迭代周期是迄今為止最長的一個版本,另一方面是因為這個版本在多個方面的大幅進化。下面就是 3.6 版本的更新說明,由于更新數量過多(engine:1110 PRs,editor:678 PRs),在此只列出相對重要的更新。

    重點更新

    圖形渲染

    Surface Shader 自定義材質

    Surface Shader 使用統一渲染流程和結構,可以讓用戶以簡潔的代碼創建表面材質信息,指定用于組合的光照和著色模型。相比舊版(Legacy Shader)的優點是更易書寫和維護,有更好的版本兼容性,也更不容易產生渲染錯誤。并且可以從統一流程中獲取很多公共特性,如統一的全場景光照和 Debug View 調試功能等。

    Creator 也更易擴展出多種常見的復雜材質提供給用戶,未來還會支持 Shader Graph 自動生成 Effect 代碼,可以極大提高 Shader 開發者的效率。

    CSM 級聯陰影

    普通的陰影貼圖有一個致命弱點:當投影面積較大時,對陰影貼圖分辨率的需求會超出硬件承載極限。如果不提高分辨率會導致陰影鋸齒嚴重、形狀缺失、不清晰,但減小投影面積又會導致陰影可視距離非常短。在陰影可視距離和陰影效果上的平衡調整是一個非常令人頭痛的問題。

    CSM將視錐按遠近順序劃分為多塊,近處投影范圍更小而遠處投影范圍更大,相當于一個自適應的陰影貼圖,從而提高數倍貼圖利用率。它可以在較大的陰影可視距離上具備精細的陰影效果,再也不用把精力花費在參數調校上了。

    新增 Rendering Debug View 模式

    多種自定義的顯示模式,幫助用戶更快定位各種材質、光照、陰影顯示問題,以及方便用戶查看更清晰的特定場景信息,幫助用戶做出優化決定。

    GGX 環境反射卷積圖

    由于精確光源的高光都是使用 GGX 的 BRDF 分布,對于環境光源而言也必須使用同樣的 BRDF 做球面卷積才可以讓兩種光源的光照效果對應。此外不同粗糙度的反射光照是存儲在對應的 Mip 中,相比于自動生成的 Mip 數據,卷積計算可以修復以下問題:

    • 環境高光的泛光和拖尾現象被極大的削減了
    • 與 Substaince 的標準 PBR 材質工作流效果對不上
    • 平行光高光和環境光高光效果對不上

    如圖所示:

    自動 Mipmaps
    GGX 卷積
    GGX | 平行光 | Mipmaps

    各向異性光照模型

    通過 Surface Shader 帶來的好處,我們可以充分擴展 PBR 光照模型。在 3.6 已經完整支持了在精確光源和環境光源下,各向同性和各向異性的材質與光照模型??梢詫?Substaince PBR 材質庫,制作拉絲紋路的金屬、頭發、絲綢等等。

    其他

    1. 支持設置 Skybox 材質
    2. 增大材質的 Normal Strength 范圍
    3. 新增 GLTF specular-glossiness workflow 支持
    4. 更新默認 FBX surface phong 材質支持
    5. 擴展 Blender principled bsdf 材質的 Specular 通道支持
    6. 添加 mixamo.com 模型材質導入支持

    編輯器體驗

    UI 全面升級

    V3.6 啟用了全新的編輯器 UI,本次改版圍繞「更協調」的視覺系統、「更科學」的視覺反饋、「更沉浸」的交互感受,對 UI 和交互進行了一次全方位的梳理。我們希望通過交互來改善視覺感受,通過視覺來影響交互體驗,并從這兩個層面進一步提高用戶體驗。未來我們將繼續基于 Cocos 的設計目標、設計系統、設計原則進行規范化設計,持續更新迭代,優化核心交互和工作流程。

    內置編輯器預覽模式

    開發效率是 Cocos Creator 非常重視的一項核心優勢,在 v3.6 中這項優勢得到了進一步提升。除了網頁預覽和模擬器預覽,現在開發者還可以使用「編輯器預覽」來運行游戲。編輯器預覽將在場景管理器中直接執行游戲邏輯,并且可以實時調試游戲場景。一方面帶來更無縫的預覽體驗,另一方面也補足了在調試方面的短板。

    此功能目前處于實驗性階段,歡迎大家在使用過程中給我們更多反饋。未來我們也將持續關注研發效率,在腳本編譯、項目調試、構建發布環節持續提升用戶的幸福感。

    動畫嵌入播放器

    動畫編輯器新增了嵌入播放器功能,可以在任意動畫中嵌入其他粒子和動畫,并用類似視頻剪輯軟件軌道的方式進行編排,自由調整時長和播放位置。

    在完成編輯之后,嵌入播放器的內容會伴隨此條動畫剪輯(AnimationClip)一起播放,在 Animation 組件和動畫圖系統中都能支持。此外,動畫嵌入播放器支持添加到 FBX 導入的動畫上,可以實現更靈活的特效控制,解決了導入動畫難以二次編輯的問題。

    目前在 3.6 中提供了粒子和動畫兩種播放器,可以在實驗室設置中啟用。

    集成多語言支持

    為了更好地服務開發者出海,v3.6 提供了內置的多語言工具 Localization Editor(L10n),目前支持文本翻譯和資源替換。其定位是與 Creator 深度集成,通過高自動化提高翻譯的效率,并且以無代碼的方式降低使用門檻,達到任何人都可以開箱即用的目的。

    包含的核心功能為:

    1. 支持機器翻譯,目前接入了 Google、有道翻譯
    2. 支持一鍵提取各類需要翻譯的內容
    3. 支持 Excel、csv、po 文件批量導入導出
    4. 支持多語言實時預覽及資源替換

    Localization Editor 目前處于實驗性階段,未來將提供更豐富的游戲本地化能力,歡迎大家提供反饋。

    場景編輯器

    • 支持表面吸附和頂點吸附
    表面吸附 Surface Snapping(按住 ctrl/cmd + shift)
    頂點吸附 Vertex Snapping(按住 v)
    • 支持框選功能,可以批量選中多個物體

    構建能力

    1. 可以在構建任務中自由選取和組合 Build、Make、Run 等子任務執行
    2. 資源服務地址已作為全平臺共用參數,支持一鍵使用構建內置服務器,方便本地開發測試
    3. 優化了構建內編譯引擎與編譯腳本的任務調度,獨立進程執行,降低構建進程對內存的占用
    4. 允許在偏好設置內添加自定義 cmake 工具供原生構建使用
    5. 構建鉤子函數支持 onError 鉤子函數用于捕獲構建失敗的情況
    6. 允許在偏好設置里關閉構建紋理壓縮、引擎、自動圖集對緩存的使用

    其他

    1. 支持 Mesh 資源的縮略圖顯示
    2. 支持取消對場景編輯器的幀率限制(實驗室功能)
    3. 支持直接在 assets 面板篩選 Bundle 文件夾,快速找到 Bundle

    基礎設施

    原生化層級上升

    從去年 3.3 版本發布之后,其中最重要的原生化團隊就開始了針對 3.6 版本目標的開發工作。這么長的周期其實往往是一些底層根基性重構所必需的,而商業引擎服務于全行業的特殊性決定了它既要緊跟硬件的發展不斷挑戰最好的性能、最優秀的畫面表現力,還要在生產端不斷提升生產效率,保持對項目的兼容性和對不同硬件環境的伸縮性適配。這些挑戰意味著引擎需要對底層框架進行持續的迭代和重構,有時候是破壞性的,比如從 2D 引擎進化為 3D 引擎,而大多數時候這種迭代是延續性的,比如我們在 3.6 的原生化進展。盡管花費了我們團隊一年的時間,進行了多個階段和多個模塊的重構,原生層代碼增加了兩倍多,但我們仍然在大幅度優化性能的基礎上做到了對老項目的兼容。這樣的底層重構一方面帶來了可見的性能和表現力提升,另一方面,我們往往是為了未來的進一步迭代做好準備,掃清障礙。從 3.6 這個版本的縮影大家可以看到引擎開發永恒的命題:持續不斷得自我變革,以適應硬件的更新和用戶需求的變化。

    2D 渲染性能

    3.6 還有一個重要的具有里程碑意義的標志,那就是在 2D 渲染性能上和 2.x 達到了同樣的水準,代表著 2.x 用戶如果有 3D 需求或持續迭代需求可以放心升級到 3.x。在底層原生化的基礎之上,我們進一步將 2D 渲染數據結構、2D 合批管理器和渲染流程都原生化了,讓 2D 的合批和提交渲染的流程都在原生進行,以達到類似 2.x 的性能表現。當然,現階段還有部分遺留的工作沒有完全完成,比如 Spine 的合批支持,但這也代表著在原生化的基礎之上,3.x 的 2D 渲染性能還將有更高的天花板等待我們去突破。

    添加原生插件能力

    原生插件可以鏈接開發者現有的 C/C++ 代碼庫,綁定接口到JS層并在不同項目間重復使用。 

    通過利用 CMake 的能力,插件能靈活地集成源文件、靜態庫或動態庫。C/C++ 接口可以直接使用傳統的自動/手動綁定機制,也可以使用3.6 新增的 sebind 高階接口導出到腳本層。 開發完成后,原生插件可以 zip 包的形式單獨分發, 也可以打包到 編輯器插件 一并發布。

    詳細使用方式請參考 使用文檔 和 使用范例。

    其他

    1. 添加更易用的高層 JS 綁定 Sebind
    2. 集成 Android Game Activity
    3. Downloader 支持在 iOS/Android 平臺的斷點續傳
    4. 添加 `settings` 模塊以便用戶訪問,保存了用戶預設的運行時項目配置
    5. 重構引擎啟動流程,簡化 application.js 邏輯,增加啟動階段的事件

    框架能力

    Marionette 動畫系統更新

    • 動畫圖支持動畫預覽
      編輯動畫狀態機時可以實時預覽,過渡與混合的效果,快速調試,無需每次修改之后都要運行游戲才可以查看結果。
    • 動畫圖支持變量和 Layer 重命名,支持更清晰的自定義的名字,方便修改。
    • 動畫圖支持過渡線的排序, 清楚看到過渡所使用的優先級。
    • 動畫圖增加了 “終點起始時間” 屬性,允許過渡的目標動畫從指定位置開始播放。
    • 動畫圖現在可以將某個過渡配置為可中斷的,以允許指定的過渡被其它的過渡中斷,該功能可在實驗室設置中啟用。

    粒子系統更新

    • 新增粒子噪聲圖模組,為粒子帶來更自然,更加可控的隨機運動效果
    • 支持 Instanced Mesh,提升發射器的性能
    • 修復粒子編輯面板不支持 Undo 的問題,方便調試
    • 支持子節點樹的組合粒子預覽控制

    其他

    • Mesh 支持動態類型,可以在運行時通過 API 更新網格數據
    • GeometryRenderer 增加曲線類型 Spline(支持 Linear, Bezier, Catmull-Rom 曲線)
    • 支持 3D 空間 SpriteRenderer
    • 在 UI 頂點數據中填充 z 值,以便支持 UI 的 3D Transform
    • 支持渲染組件的優先級排序
    • 支持音頻 PCMData 和 sampleRate 獲取
    • 地形畫刷支持旋轉
    • 支持地形高度畫刷
    • Light map 烘焙器支持使用 tga 貼圖格式
    • MeshRenderer 會自動設置渲染用的 Light map 資源
    • 更新 iOS 原生 EditBox 樣式

    DCC

    FBX/GLTF的 Phong 和 PBR 材質智能導入

    3.6 在材質導入上實現了對 Diffuse-Specular 材質模型(包括 Phong 和 SpecularGlossiness PBR)的支持,可將材質參數智能轉換到標準 Metallic Roughness PBR 模型中。這樣就可以在不更改光照模型的情況下獲得接近原 DCC 軟件中的材質表現。

    Blender |未使用材質轉換 |使用材質轉換
    使用 Phong 材質的 FBX 智能材質導入

    不再默認拆分模型

    之前的版本由于 uniform 的限制,在 CPU 計算的骨骼動畫中,當骨骼數量超過一定值后,無法一次性通過 uniform 存儲所有骨骼數據,所以我們在模型導入時有可能拆分模型和骨骼。所以經常收到反饋說自己的一個角色模型會占用多個 DrawCall,主要原因就是這里被自動拆分了。更重要的是由于拆分不能在運行時進行,只能在離線進行,所以我們的拆分標準使用的是最低端的運行時設備和驅動(iPhone 6 WebGL),對骨骼數量限制很大。

    所以,Cocos Creator 3.6 對這一問題做了策略優化:

    • 默認情況下不再拆分模型,不對導入的模型數據做修改(也維持以前的模型設置不變)
    • 如果骨骼數量未超過實際運行時驅動的限制,直接使用 uniform 傳遞
    • 如果骨骼數量超過限制,則使用紋理傳遞

    使用紋理傳遞骨骼動畫數據的方式需要在頂點著色器中訪問紋理,這一特性最低支持為 OpenGL ES 3.0, WebGL 2.0。但依靠 GL 擴展,在僅支持 OpenGL ES 2.0 和 WebGL 1.0 設備上,幾乎已達到 100% 的覆蓋率,所以無需擔心兼容問題。

    目前保留此選項應該只是為了保持舊項目的兼容性,在適當的時候會考慮移除。


    版本升級提示

    • Windows 平臺移除 Win32 支持,僅保留 Win64 發布
    • iOS 平臺最低版本支持從 iOS 10 變更為 iOS 11(為了使用 C++ 17)
    • 內置材質的命名和編輯器中的命名保持統一,因此 EffectAsset.get、Material.initialize 中使用內置 Effect 時通常需要加上 “builtin-” 前綴。
    • 構建模板中 application.js, game.js, index.js 等文件被更新了,如果有在項目或者構建插件中自定義過模板,請重新生成并做相應修改。詳見 升級文檔。
    • settings.json 格式發生修改,對這個文件做了定制化處理的插件可能會無法使用。詳見 升級文檔
    •  由于引擎內部會對 Mask 下的節點做特殊處理,在獲取 Mask 下的子節點時,建議使用 getChildByName 函數,通過名字而非索引來獲取,以避免不可預料的問題出現。
    • Android gradle:替換 jcenter 為 mavenCenter 
    • 添加可從 `cc` 導入的 `native` 模塊,包含代碼提示,用于替代 `jsb` 全局變量
    • 我們默認關閉了字節開發者工具的 ES6 轉 ES5 功能,來解決一些編譯遇到的問題。因此我們需要手動將開放數據域模板工程轉成符合 CommonJS 規范的寫法,否則會因為不能識別 ES Module 導致字節的子域啟動失敗。如果你的項目也遇到了這個問題,請參考該 PR 修改 `項目路徑/build/bytedance-mini-game/openDataContext` 該路徑下的工程
    2022.06.22

    V3.5.2

    發布時間: 2022.06.22

    編輯器更新

    • 修復嵌套預制體修改屬性時可能報錯的問題
    • 修復材質預覽初始化寬高非整數導致的報錯
    • 修復腳本讀取 npm 包沒有正確處理上層 package.json 導致讀取失敗的問題

    引擎更新

    • 修復編輯器下重復切換場景導致的內存泄露(engine#11355)
    • 修復節點組件上修改 fbx 里材質,保存后出現多次彈窗詢問是否保存的問題(engine#11284)
    • 修復 glsl100 shader 中 isnan(0.0) 判斷導致的問題(engine#11262)
    • 修復卡通渲染材質中的 specular 參數(engine#11265)
    • 為 DCC 導入兼容的材質優化編輯器設置和代碼整理(engine#11266)
    • 修復編輯器下調用 `setUseBakedAnimation` 導致的渲染問題(engine#11267)
    • 修復 Android 平臺下 websocket 錯誤后沒有回調 onError 的問題(engine#11441)
    • 不強制對 Editbox 的占位文本使用 top 垂直排列(engine#11303)
    • 修復和優化 core 模塊下的 API 文檔注釋 (engine#11338)
    • 為 2D 頂點格式添加 API 文檔(engine#11394)
    2022.06.01

    V3.5.1

    發布時間: 2022.06.01

    V3.5.1 在不影響原有功能穩定性的前提下加入了兩項影響深遠的實驗性功能。一是智能導入 FBX 中的 DCC 默認材質,還原美術在各類 DCC 工具中使用的材質和外觀;二是內置了一系列 Surface Shader 材質資源,這將成為未來支撐材質定制的基石。除此之外,我們還完成了一系列關鍵性的問題修復,體驗優化和大量的文檔優化,建議所有 3.x 用戶升級。

    重要更新

    實驗性:FBX?智能材質導入

    FBX 智能材質導入是模型導入器中輔助轉換材質的一個功能,它可以將各種 DCC 工具導出到模型中的部分標準材質直接映射到 Cocos Creator 的內置材質中,盡量還原美術在 DCC 工具中看到的材質效果。我們可以對比一下 Maya 中的 Standard Surface 材質導入 Cocos Creator 后的效果:

    Maya 工具內效果

    開啟 FBX 智能材質導入后 Cocos Creator 內效果

    此功能已支持主流 DCC 工具:3ds Max、Blender、Maya、C4D 中的部分標準材質。

    具體使用可以參考使用文檔。同時我們也將在 3.6 中持續優化模型和材質導入體驗,敬請期待。

    實驗性:新增 Surface Shader

    從 3.0 版本以來,不少開發者都經歷過升級過程中材質無法正常使用,需要遷移的問題,為此我們也準備過不少材質系統專屬的升級文檔,然而手動升級過程的體驗確實不盡如人意。此問題的根本原因是引擎的光照模型和表面材質的計算一直在調整,這會影響所有相關的材質 effect 代碼,也會影響到用戶復用這些材質時的兼容性。
    為了提升材質系統的兼容性,我們新增了一系列 Surface Shader 資源,抽象了引擎內的光照模型和表面材質計算,未來開發者可以使用這些抽象好的頭文件和內置函數極大簡化自己書寫的 effect 資源。同時由于多了一些封裝,跨版本間的兼容性也會更有保障。
    具體 Surface Shader 的使用請參考使用文檔。

    文檔優化

    從 3.5 開始我們設計了新版 API 文檔頁面,受到了開發者比較普遍的好評和一些反饋。在 3.5.1 我們繼續做了大量的內容檢查,通過近 40 個 PR 進一步補全了之前遺留的一些 API 文檔,修復了部分文檔錯誤。并且之后文檔也會得到持續性的優化,希望給開發者帶來越來越好的使用體驗。

    重要修復

    1. 修復瀏覽器預覽速度過慢的問題
    2. 修復 Mobile Safari 上無法預覽的問題
    3. 修復部分材質從 3.4.2 或更低版本不能自動升級的問題
    4. 修復 3D 粒子系統在狀態切換時可能的報錯和表現問題
    5. 修復延遲管線的光影計算

    詳細更新

    • [FEATURE] Add smart material conversion for FBX importer
    • [FEATURE] add experimental surface shader (engine#11048)
    • [OPTIMIZE] change camera settings to orthogonal type in 2d scene templates (engine#11020)
    • [OPTIMIZE] Improve API documentations in engine
    • [OPTIMIZE] Add a new experimental import strategy in AssetDB, avoid repeative import process
    • [OPTIMIZE] Update lightmap tool LightFX
    • [OPTIMIZE] Inspector keep group display order
    • [OPTIMIZE] Improve shadowmap settings in default scene (engine#11213)
    • [OPTIMIZE] Optimize anisotropy sample (engine#11075)
    • [OPTIMIZE] Spotlight interface description change (engine#10964)
    • [OPTIMIZE] Listen WINDOW_RESIZE event by application (engine#10930)
    • [OPTIMIZE] Load libGLESv3.so by default while user choose glesv3 (engine#10941)
    • [OPTIMIZE] Allow native projects use user pre-set global cmake variables (engine#11011)
    • [OPTIMIZE] Refine MissingScript debugger (engine#10916)
    • [OPTIMIZE] Automically unfold array list when editing array length in the inspector
    • [OPTIMIZE] Optimize curve unit test (engine#10912)
    • [FIX] Fix long loading time issue
    • [FIX] Fix camera preview not working issue
    • [FIX] Fix no responding due to lock on scene scripts
    • [FIX] Fix preview issue on some browsers like Safari
    • [FIX] Fix inspector cannot create new clip under animation editing mode
    • [FIX] Fix clip list not updated after clip creation under animation editing mode
    • [FIX] Fix clip removal check under animation editing mode
    • [FIX] Fix frequent update of nodes in the animation editor
    • [FIX] Improve error handling during node data migration for animation clip
    • [FIX] Popup warning when regenerate an exist prefab asset
    • [FIX] Fix asset builder issue which cause wrong JSON group for auto-atlas asset and duplicated assets in JSON
    • [FIX] Data tolerance for animationBlendType in AnimationGraph
    • [FIX] Fix conflict after importing custom texture compression config
    • [FIX] Fix code sample issue in the template of the builder's plugin
    • [FIX] Fix engine error caused by material switch
    • [FIX] Fix prefab data copy issue when the root node is 2d node
    • [FIX] Fix issue when copy component data from prefab instance to other prefab
    • [FIX] Fix error when AnimationGraph panel is initialized during editor startup
    • [FIX] Fix selection issue in scene editor when viewing on screen with dpr larger than 2
    • [FIX] Avoid potential infinity loop in tickInEditMode
    • [FIX] Fix error caused by empty result when dumpping node data
    • [FIX] Fix error when typing enter in the texture name field of the joint texture layout
    • [FIX] Fix builder malfunctioning after importing configurations
    • [FIX] Fix view rotation after modifying scale value of the preview window
    • [FIX] Fix part of circular reference issue by upgrading rollup to 2.37.0
    • [FIX] Fix collision matrix setup issue in project setting
    • [FIX] Fix issue that the last panel cannot be dragged in dock
    • [FIX] Circular references should cause workflow failed (engine#10841)
    • [FIX] Fix geometry-renderer in deferred pipeline (engine#10890)
    • [FIX] Fix meshBuffer checkCapacity bug (engine#10910)
    • [FIX] Remove ambient.mipmapCount (engine#10920)
    • [FIX] Fix auto-atlas test bug cause time sequence (engine#10914)
    • [FIX] Fix fog is more brighter with native engine (engine#10972)
    • [FIX] Fix android crash due to surface not ready (engine#10984)
    • [FIX] Fix pause operation fail when play and pause audio in the same frame on native platforms (engine#10990)
    • [FIX] Fix instanced model has no spot light shadow (engine#10921)
    • [FIX] Fix particle system memory issue (engine#11032)
    • [FIX] Terrain and model automatic choose lightmap shader (engine#11006)
    • [FIX] Correct render pipeline script template error (engine#10927)
    • [FIX] Fix animation mask data cannot be load from gltf (engine#11033)
    • [FIX] Fix shader migration from lower version (engine#11038)
    • [FIX] Fix subcontextview for wechat platform (engine#11049)
    • [FIX] Fix notifySkinnedMeshRemoved (engine#11074)
    • [FIX] Fix word wrap for Vietnamese characters (engine#10925)
    • [FIX] Instantiate all FastDefined objects as value type (engine#11052)
    • [FIX] Fix format feature request for Float32 for gles3 and webgl2. (engine#11084)
    • [FIX] Fix eglSwapbuffer error due to eglSurface is not ready (engine#11083)
    • [FIX] Disable gametick after enter background(revert to logic to version 3.4.2 (engine#11095)
    • [FIX] Skip a pair of quotations for avoiding spaces when image name are detected in RichText (engine#10954)
    • [FIX] Assign underline initial value when label segments are contructed in RichText (engine#10954)
    • [FIX] Fix clear particle bug (engine#11066)
    • [FIX] Fix ndc->world with deferred shading (engine#11099)
    • [FIX] Remove enableBatch from spine/db (engine#11100)
    • [FIX] Fix deferred pipeline depth stencil with linear sampling in webgl2.0 (engine#11110)
    • [FIX] Fix multi blank lines (engine#11116)
    • [FIX] Fix ios accelerometer not working (engine#11142)
    • [FIX] Add sky.effect with surface shader (engine#11156)
    • [FIX] Fix error during particle switch (engine#11139)
    • [FIX] Change logger level (engine#10944)
    • [FIX] Don't push data if debug is not enabled. (engine#11118)
    • [FIX] Fix physics collision matrix (engine#11181)
    • [FIX] Fix multi quotations bug and add unit tests (engine#11190)
    • [FIX] Fix light flashes at instanced model (engine#11203)
    • [FIX] Solve getInstancedModel judgment error (engine#11205)
    • [FIX] Fix prefab generates incorrect data (Repeated node) (engine#11211)
    • [FIX] Fix terrain index buffer sharing bug (engine#11206)
    • [FIX] Fix isnan(0.0) with webgl1.0 (engine#11262)
    • [FIX] Fix specular params with surface toon (engine#11265)
    2022.05.06

    V3.5.0

    發布時間: 2022.05.06

    重要更新

    Marionette 動畫系統

    在 v3.4 版本中我們帶來了支持復雜角色動畫的動畫系統 Marionette,支持動畫狀態機和多維混合等功能。在 v3.5 中,我們繼續向其中添加了不可或缺的關鍵能力:層級和遮罩。這可以讓開發者輕松做出更復雜的動作系統,比如下面展示的上下半身分離。

    2D 項目體驗優化

    對于 2D 用戶和 2D 項目開發,我們做了一些編輯器的體驗增強,這也是為了幫助有升級需求的 2.x 開發者更好得升級上來,獲得與 2.x 類似的體驗。從 3.0 發布以來,我們一直在通過各項性能和體驗優化積極推動開發者的升級,并且還會持續優化下去。在 v3.5 中,你將可以看到下面的一些體驗優化:

    1. 所有 2D 項目創建出的場景都會默認包含 Canvas 和一個正交投影的 2D Camera,不會包含 3D Camera
    2. 默認的 2D 場景會默認使用 2D 場景視圖
    3. 一部分屬性面板,比如節點,也會支持 2D 視圖
    4. 所有 3D 模塊被默認剪裁了,并且在添加組件列表和節點創建列表中也不會包含 3D 相關的組件和節點
    5. 如果你的 2D 項目中需要使用 3D 能力,只需要在項目配置中將 3D 模塊添加上即可

    Frame Pacing Library (Swappy)

    Cocos 和 Google 在 Android 移動平臺上一直以來都有非常緊密的合作,Android 也是我們最重要的平臺之一。我們很高興宣布在 v3.5 引擎中加入了Frame Pacing Library。它是 Android Game Development Kit (AGDK) 的一部分,主要用于幫助游戲平滑和穩定幀率,對 OpenGL 或 Vulkan 后端都適用。你可以在 Android 構建面板中啟用 Swappy 來開啟此功能。

    基礎幾何渲染 Geometry Renderer

    我們在此版本中引入了一個新的簡易幾何渲染的 API,這些 API 是為了繞過組件層,直接在屏幕上渲染一些用于調試的標記幾何體。目前已支持線條、盒子、球體、多邊形等幾何體,渲染模式支持線框模式、填充模式,一部分幾何體也可以動態開啟光照和深度測試。所有幾何體的坐標系在世界空間,并且支持 transform。

    更詳細的幾何體信息請參考下面的表格

    材質編輯體驗優化

    在過去幾個版本中,我們一直在修正和提升渲染表現,同時,我們也在關注美術側的 DCC 內容生產工作流。在 v3.5 中會有一部分材質體驗的優化交付給大家:

    1. 當一個 FBX/GLTF 資源被導入后,如果需要修改材質,你不再需要 dump material 然后在復制后的材質中修改,你可以直接在導入的材質上修改。
    2. 當你修改材質時,新版本將支持 undo / redo 操作。
    3. 當你在編輯材質時切換 effect,不同 effect 之間匹配的屬性值會被緩存并遷移,比如 'mainTexture' 的貼圖資源,如果在不同 effect 中都包含就會自動維持。

    同時敬請期待我們后續版本中更顯著的美術體驗優化。

    地形的抹平畫刷和高度設置

    地形編輯器在新版本中提供了新的抹平和高度畫刷,可以讓開發者們更方便得編輯平面地貌。

    平臺抽象層 Platform Abstraction Layer

    從 v3.5 開始,我們將所有平臺層相關的底層適配代碼集合到了 PAL 模塊中,包括系統信息、窗口適配、音頻、輸入系統等。系統層的事件派發行為也被統一了。這是一個底層重構,用戶層 API 不會收到影響,但這次重構會讓 Cocos Creator 未來有能力更輕松得適配新的平臺和環境。

    性能優化

    此版本中比較顯著的性能優化包含以下幾點:

    1. Spine 和 Dragonbones 在原生平臺通過共享內存避免了 C++ 向 JS 拷貝數據,對原生平臺性能有一定的提升。
    2. 優化了 RealCurve 和 CurveRange 的內存占用。
    3. 大幅度優化了粒子系統的反序列化性能。
    4. 在 Android 平臺使用 okhttp 來實現 WebSocket 模塊以降低功耗并提升性能。
    5. 通過減少原生對 JS 的調用次數來提升 Label 和 Graphics 的渲染性能。

    新的 API 文檔設計

    對于之前的 API 文檔體驗社區用戶多有吐槽,也讓引擎的新人上手門檻和學習曲線抖升。為了解決這個至關重要的問題,我們重新設計了 API 文檔的組織方式和界面設計,大家可以訪問我們 新的 API 文檔鏈接 來體驗。當然,這只是一個開始,我們也希望大家繼續反饋建議幫助我們持續改善文檔的體驗。

    引擎倉庫和自定義引擎升級

    為了更好服務開源社區,我們將原生引擎倉庫合并到了 engine 倉庫中,并且遷移到 cocos/cocos-engine,從現在開始,我們將通過公開 issues 和 公開 projects 向開源社區同步我們的后續計劃。如果你正在使用自定義引擎,那么這個修改對你的影響會比較大,從 v3.5 開始,自定義引擎只需要克隆 engine 倉庫即可。所有以前在 TS 引擎倉庫的修改可以直接 rebase 到 v3.5 分支,但是以前在 engine-native 倉庫的修改需要手動應用到 engine 倉庫的 native 目錄下。詳細信息可以參考自定義引擎文檔。

    破壞性更新

    • [FIX] Fix dragonbones/spine sockets transform (engine#10260)

    從 v3.5 開始,請避免向 sp.Skeleton 或 dragonBones.ArmatureDisplay 的 sockets 掛件 target 設置已在使用的節點,否則這個節點的變換矩陣會被覆蓋。正確的方法是創建一個新的空節點并設置為 socket target,詳細信息可以參考 Spine 掛件文檔。

    • 從 v3.5 開始引擎將支持模型級別陰影偏移(Shadow bias),這將使得陰影效果更容易適配不同模型的表面。如果你的項目中包含自定義材質,請參考升級文檔來應用這個配置。
    • Effect 資源中關于 Macro Tags 和 Functional Macros 的語法得到了升級,避免了占用 glsl 的標準 define 語法,舊項目中的 Effect 資源在升級過程中會被自動升級。但如果你從外部直接復制舊版本的 Effect 資源或寫新的 Effect 資源時,請注意語法方面的變化:
      • Macro Tag 的新語法:`#pragma define-meta`
      • Funtional Macro 的新語法:`#pragma define`

    已知問題

    • 在 iOS 15.4 中,Safari 中默認開啟了 “WebGL via Metal” 這項實驗性功能,這將會導致部分項目出現渲染問題(畫面不刷新或部分刷新,錯誤的圖塊等)。一般在開啟了 `ENABLE_WEBGL_ANTIALIAS` 的情況下,并且使用了離屏 FrameBuffer 并對其采樣,會觸發此問題。臨時解決方案是在項目配置中關閉 `ENABLE_WEBGL_ANTIALIAS`,此問題暫無根本性的修復方案,很可能會在新的 iOS 版本中得到修復。

    Detailed change log

    • [FEATURE] Marionette: layer, mask, auto-reset trigger, empty state, localization (engine#10179)(engine#9913)(engine#10550)
    • [FEATURE] Improve user experience for 2D only project
    • [FEATURE] Integrate Android Frame Pacing library (engine#10327)
    • [FEATURE] Add low level geometry renderer for debugging (engine#10189)
    • [FEATURE] Make builtin material of FBX and GLTF directly editable (engine#10518)
    • [FEATURE] Support undo redo on editing assets (engine#10657)
    • [FEATURE] Add Flatten and SetHeight sculpt tool to terrain editor
    • [FEATURE] Support drag or select animation clips directly to the animation editor for editing
    • [FEATURE] Make animation module optional (engine#10257)
    • [FEATURE] Add shadow bias setting for MeshRenderer (engine#10102)
    • [FEATURE] Add constants for surface shaders (engine#10590)
    • [FEATURE] Support selecting mipmap range for Texture2D and TextureCube. (engine#10500)(engine#10096)
    • [FEATURE] Add Texture2D option to fix blending artifact caused by semi-transparent pixels (engine#10419)
    • [FEATURE] Add a new interface to query format feature info: Device.getFormatFeature (engine#9949)
    • [FEATURE] Add specular intensity for DCC effects (engine#10613)
    • [FEATURE] Rich text supports vertical alignment (engine#10340)
    • [FEATURE] Add spacingX property to Label inspector for BMFont type (engine#9541)
    • [FEATURE] Distribute touch events independently (engine#10712)
    • [FEATURE] Add destroy window event and recreate window event on windows platform (engine#10365)
    • [FEATURE] Add Node.getPathInHierarchy for getting complete path in hierarchy (engine#9536)
    • [FEATURE] Support custom texture compress tools in the Project Settings
    • [FEATURE] Support engine separation feature in OPPO platform build
    • [FEATURE] Support the OS Target (simulator or device) option in iOS platform build
    • [FEATURE] Add cmake hooks support for cocos-service (engine#10691)
    • [FEATURE] Support inspector droppable config (engine#10440)
    • [OPTIMIZE] Redesign platform abstraction layer
    • [OPTIMIZE] Optimize memory occupation of RealCurve, CurveRange (engine#10346)
    • [OPTIMIZE] Optimize decorator performance for particle system instantiation (engine#10323)
    • [OPTIMIZE] Avoid spine & dragonbones copping buffer from native to js (engine#10235)
    • [OPTIMIZE] Android: reduce power consumption by using okhttp to implement websockets (engine#10384)
    • [OPTIMIZE] Improve CameraComponent inspector user experience (engine#10708)
    • [OPTIMIZE] Improve Skybox inspector user experience (engine#10004)
    • [OPTIMIZE] Refine context 2d implementation, reduce call from native to js (engine#10211)
    • [OPTIMIZE] Reset light map when rebuild terrain (engine#10714)
    • [OPTIMIZE] Simplify cmake configurations in the native template (engine#10479)
    • [OPTIMIZE] Improve the JSON grouping strategy for building dependencies of merged bundle
    • [OPTIMIZE] Optimize texture compress panel, support searching config in panel
    • [OPTIMIZE] Optimize output logs of the build process, parameter completions of the command line build, parameter checks for some platforms
    • [OPTIMIZE] Disable bindingMappingInfo validation (engine#10701)
    • [OPTIMIZE] Reset-property from unknown type (engine#10687)
    • [OPTIMIZE] Exclude arm64 arch and specify x86_64 for ios simulator by default (engine#10679)
    • [OPTIMIZE] Do not play particle system component in Editor (engine#10678)
    • [OPTIMIZE] Disable post-process alpha blend (engine#10658)
    • [OPTIMIZE] Set simulator window position to center (engine#10655)
    • [OPTIMIZE] Remove cocos2d-x network deprecated code (engine#10647)
    • [OPTIMIZE] Remove deprecated API in animation module (engine#10645)
    • [OPTIMIZE] Remove some deprecated api (engine#10656)
    • [OPTIMIZE] Minor module refactor in core/renderer/ (engine#10643)
    • [OPTIMIZE] Add `keep` attribute to java class in project cfg (engine#10641)
    • [OPTIMIZE] Change rich text warning for splitting long strings (engine#10624)
    • [OPTIMIZE] Disallow animation on particle system properties (engine#10605)
    • [OPTIMIZE] Mark some methods as internal (engine#10604)
    • [OPTIMIZE] Disallow animation on customMaterial (engine#10601)
    • [OPTIMIZE] Do not remove all RichText children when resetting (engine#10599)
    • [OPTIMIZE] Modify the application interface name and remove the js keyword (engine#10556)
    • [OPTIMIZE] Optimize ts templates (engine#10553)
    • [OPTIMIZE] Optimize assets editing interface (engine#10531)
    • [OPTIMIZE] Output warning info when attached to the node has zero scaling (engine#10524)
    • [OPTIMIZE] Android: prevent class CocosWebSocket from obfuscation in release mode (engine#10511)
    • [OPTIMIZE] Optimize the way how animation component update its animation content (engine#10485)
    • [OPTIMIZE] Shader optimization always on (engine#10483)
    • [OPTIMIZE] Move AppDelegate into template (engine#10509)
    • [OPTIMIZE] Add dynamic library export macro (engine#10393)
    • [OPTIMIZE] Add DisallowMultiple for UIOpacity component (engine#10390)
    • [OPTIMIZE] SDL related interface encapsulation (engine#10385)
    • [OPTIMIZE] Optimize material editing using cache prop-value (engine#10376)
    • [OPTIMIZE] Keep EditBox placeholder overflow (engine#10368)
    • [OPTIMIZE] Use approx instead of strict equal in UITransform to avoid potential endless loop (engine#10357)
    • [OPTIMIZE] Modify diffuseMap property visibility (engine#10333)
    • [OPTIMIZE] Windows platform handles multiple events at once (engine#10344)
    • [OPTIMIZE] Shader code style improvements for future surface shader (engine#10326)
    • [OPTIMIZE] Bypass job system creation if not needed (engine#10308)
    • [OPTIMIZE] Optimize android download tasks. (engine#10274)
    • [OPTIMIZE] @disallowAnimation should not imply visible (engine#10262)
    • [OPTIMIZE] Optimized deletion operation for skybox environment map (engine#10248)
    • [OPTIMIZE] Optimize property name display format (engine#10241)
    • [OPTIMIZE] Return aabb objects back to pool after usage (engine#10230)
    • [OPTIMIZE] JSB add convert routines for size_t/long (engine#10198)
    • [OPTIMIZE] Change lighting map unpack and luminance multiply (engine#10185)
    • [OPTIMIZE] Rearrange IA input variables and functions for surface shader (engine#10123)
    • [OPTIMIZE] GFX: refactor access typed array to access flags (engine#10103)
    • [OPTIMIZE] Gfx: refactor binding mappings (engine#10013)
    • [OPTIMIZE] Use lagacyPublic to marked deprecated public interface (engine#9859)
    • [OPTIMIZE] Shadow info migration (engine#9857)
    • [OPTIMIZE] Safely destroy the geometry data (engine#9849)
    • [OPTIMIZE] UI: add same value check in property setter (engine#9744)
    • [OPTIMIZE] Optimize label serialization of "spacingX" and "underlineHeight" (engine#9629)
    • [OPTIMIZE] Rich Text format optimization by split into small sections (engine#9601)
    • [OPTIMIZE] Clean up gfx module for independent compilation (engine#9573)
    • [OPTIMIZE] Code style: replace macros to functions (engine#9572)
    • [OPTIMIZE] Set active to false if pass undefined or null to Node.active (engine#9571)
    • [OPTIMIZE] Optimize scroll view offset annotations (engine#9553)
    • [OPTIMIZE] Remove deprecated attributes: srcBlendFactor and dstBlendFactor#6461 (engine#9533)
    • [OPTIMIZE] Show pipelineStates in inspector (engine#10586)
    • [OPTIMIZE] Add category config file for docs (engine#10589)
    • [FIX] Fix rendering issue after baking light map with prefab
    • [FIX] Fix baking tool LightFX multi-thread error
    • [FIX] Fix prefab data lost when exiting from animation edit mode to prefab edit mode
    • [FIX] Fix prefab/scene data may be overwritten when switch between scene and prefab quickly
    • [FIX] Fix inability to save changes to nested prefab
    • [FIX] Fix warning when clicking on different FBX assets
    • [FIX] Fix a series of optimization issues related to keyframe operation in the animation editor
    • [FIX] Fix build error on windows platform when editor path contains spaces
    • [FIX] Fix build failure after check [Main Bundle is remote] option on mac platform
    • [FIX] Fix an issue where the editor extension failed to start and could still be queried
    • [FIX] Fix prefab ID will be changed after rename of FBX or GLTF
    • [FIX] Fix octree culling rule (engine#10723)
    • [FIX] Walk around iOS 15.4 wasm memory issue (engine#10721)
    • [FIX] Bypass the bug that vulkan destroys resources that are still in use (engine#10716)
    • [FIX] Fix the performance issue caused by texture mipmap (engine#10713)
    • [FIX] Fix native module override (engine#10709)
    • [FIX] Fix #11925 skin instancing vertex attributes binding order for native… (engine#10703)
    • [FIX] Fix rich text children index bug (engine#10700)
    • [FIX] Fix sub context view not working when the design resolution size is less than 513 * 513 (engine#10698)
    • [FIX] Fix scroll view Auto Scroll Brake bug (engine#10693)
    • [FIX] Fix instanced rendering issue by joint index (engine#10692)
    • [FIX] Fix: set tmxAsset not apply file (engine#10690)
    • [FIX] Fix: set skeleton data, _cachedSockets should be reset (engine#10671)
    • [FIX] Remove playing audio when player is destroyed (engine#10670)
    • [FIX] Use correct macro patches (engine#10669)
    • [FIX] Correct profiler statistics (engine#10667)
    • [FIX] Fix screen size && touch event on Alipay platform (engine#10666)
    • [FIX] Fix ndk path not working (engine#10627)
    • [FIX] Fix android crash due to eglSurface unavailable (engine#10621)
    • [FIX] Use macro to set XXTEAKEY (engine#10607)
    • [FIX] Fix opacity bug when active false (engine#10595)
    • [FIX] Fix #11796 using cc_shadowbias without batching macro (engine#10587)
    • [FIX] Fix ui-mesh-renderer in editor (engine#10582)
    • [FIX] Fix ios enter forground crash by useless appDelegateBridge (engine#10580)
    • [FIX] Fix cross fade bug introduced in #10485 (engine#10576)
    • [FIX] Fix skeletal animation state got update twice (engine#10571)
    • [FIX] Avoid creating the window twice (engine#10566)
    • [FIX] Fix animation event type typing (engine#10562)
    • [FIX] Animation state bugfix (engine#10558)
    • [FIX] Fix watermark can not show normally (engine#10547)
    • [FIX] Fix sprite-frame size after repetitive dynamic creation of tiled map (engine#10535)
    • [FIX] Fix MTLTexture::doInit (engine#10532)
    • [FIX] Fix gfx::FrameBufferInfo rehash crash bug (engine#10525)
    • [FIX] Fix tiled show with pixel offset (engine#10523)
    • [FIX] Fix label Blend Factor bug for byte dance platform (engine#10516)
    • [FIX] Fix animation bug introduced from #10485 (engine#10512)
    • [FIX] Fix vec3 & vec4 transformAffine (engine#10508)
    • [FIX] Fix animation blending zero check (engine#10499)
    • [FIX] Fix pointer event when camera.orthoHeight changed (engine#10496)
    • [FIX] Fix Android websocket send string (engine#10495)
    • [FIX] Fix getUrlWithUuid smart hint issue (engine#10484)
    • [FIX] Fix punctual lights luminance * PI (engine#10480)
    • [FIX] Set light map clamp to border and fixed rebuild terrain weights (engine#10470)
    • [FIX] Clear Particle under UIMeshRenderer when play end (engine#10468)
    • [FIX] Fix: There is no need to execute updatePreview in the ready lifecycle (engine#10466)
    • [FIX] Fix fog accumulated error with multiple local lights (engine#10445)
    • [FIX] Fix templates and minor tweaks (engine#10434)
    • [FIX] Force update for spine color setting. (engine#10417)
    • [FIX] Fix opacity dirty bug when parent change (engine#10416)
    • [FIX] Fix gen-simulator (engine#10401)
    • [FIX] Fix animation not work caused by creating spine in a hided node (engine#10380)
    • [FIX] Fix 2D physics rotation error (engine#10373)
    • [FIX] Reset render data before set asset for spine/dragonbones (engine#10370)
    • [FIX] Fix crash caused by incorrect hash (engine#10359)
    • [FIX] Fix spine/dragonbones opacity update (engine#10349)
    • [FIX] Fix spine rendering confusion (engine#10348)
    • [FIX] Fix bug: reset renderer-component would not update model (engine#10342)
    • [FIX] Fix ios icon res lost (engine#10336)
    • [FIX] Fix compiling error with merged code (engine#10332)
    • [FIX] Fix: #11580 create new light source with unknown typed intensity in the inspector (engine#10324)
    • [FIX] Fix skinned mesh morph rendering (engine#10318)
    • [FIX] Avoid spine and dragon crash. (engine#10314)
    • [FIX] Fix spine in native platform can not get animation name (engine#10303)
    • [FIX] Fix dragonbones/spine sockets transform (engine#10260)
    • [FIX] Fix crash when app jump to camera (engine#10255)
    • [FIX] Fix translucent problem due to SurfaceView‘s limit (engine#10228)
    • [FIX] Fix unnecessary include for surface shader (engine#10220)
    • [FIX] Fix misuse of draw API on metal (engine#10195)
    • [FIX] Fix: linux build use static link. need add sndio lib (engine#10186)
    • [FIX] Fix ios device display effect (engine#10184)
    • [FIX] Fix spine binary data read issue. (engine#10172)
    • [FIX] Fix android 12 crash when using Vulkan backend (engine#10158)
    • [FIX] Fix fps calculation error for linux and QNX (engine#10141)
    • [FIX] Fix default scene camera clear flags is solid not skybox (engine#10132)
    • [FIX] Update ci yml files, add native/web prefix, cherry-pick from #10083 (engine#10104)
    • [FIX] Fix binding mappings (engine#10058)
    • [FIX] Fix shader code style (engine#10039)
    • [FIX] Fix decorator order issue in standalone mode (engine#9911)
    • [FIX] Fix keyframe editorExtras serialization (engine#9905)
    • [FIX] Fix pixels offset (engine#9829)
    • [FIX] Fix negative scale widget in editor (engine#9811)
    • [FIX] Particle alpha blend fix (engine#9784)
    • [FIX] Fix import relation (engine#9765)
    • [FIX] Fix bug that causes autoScrolling is always triggered in v3.5 (engine#9548)
    • [FIX] Fix crash: native model is destroyed but not removed from render scene (engine#9543)
    • [FIX] Update the split condition of RichText truncations (engine#10252)
    • [FIX] Fix iOS Simulator compile error when using TBB on Apple Silicon device (cocos-engine-external#232)
    2022.04.24

    V2.4.9

    發布時間: 2022.04.24

    2.4.9 對近期發現的一些 2.x 相關問題集中進行了修復,重點提升了編輯器及引擎的穩定性,解決了一些影響原生移動平臺上架的阻礙,建議所有 2.x 用戶升級。此版本未對項目和插件的兼容性造成破壞,大家可參照 2.4.7 的升級說明進行更新。根據 3.0 版本正式發布時的計劃,我們仍會在 2022 年繼續提供關鍵缺陷修復。這些修復將只圍繞穩定性和可用性進行優化,因此不再建議新用戶或者新項目選擇 2.4,請統一使用 3.x 版本開發。

    Stack Changes

    • 升級安卓 okhttp 到 3.12.14,避免發布 Google Play 時遇到兼容問題 [#4264]
    • 升級安卓 OpenSSL 到 1.1.1g,避免 ndk 22 的編譯問題 [#4282]

    Editor

    • 修復部分 Mac 設備上構建可能卡住的問題
    • 修復 Android 平臺構建勾選 app bundle 構建編譯失敗的問題
    • 修復構建 Google Play Instant 報錯的問題
    • 修復 Main Camera 父節點不能使用 scale 作為動畫幀的問題
    • 修復 Prefab 編輯模式返回帶 3D 粒子的場景報錯的問題
    • 修復偏好設置的模擬器自定義分辨率修改含有小數點的值導致無法預覽的問題
    • 修復某些情況下移動面板后,導致面板內部部分被遮擋的問題
    • 修復 Spine 組件在編輯器中切換皮膚時會出現動畫殘留的問題 [#10343]

    Engine

    • 針對微信小游戲的高性能模式進行了適配 [#10160]
    • 修復粒子系統在調用 reset 之后還有渲染數據殘留的問題,[#10088],感謝 caogtaa
    • AudioEngine 增加 isPlaying 接口 [#9372],感謝大城小胖
    • 優化 MotionStreak 的渲染效果 [#9693]

    Native

    • 移除 iOS 平臺調用的動態方法,避免影響過包 [#4275]
    • 修復 Android 手機工具欄上調整為深夜模式,應用閃退的問題 [#4276]
    • 修復多次調用 callStaticMethod 會出現 JNI ERROR 的問題 [#4162]
    • 修復 TiledMap 使用 addUserNode 添加的節點,原生和 web 顯示不一致的問題 [#4274]
    • 修復在原生平臺監聽 DragonBones 事件時,讀取事件對象的 data 屬性時閃退的問題 [#4273],感謝LincolnLiuXinbing
    • 修復 SpotLight 無法產生陰影的問題 [#4257],感謝 haha-yu
    • 修復 EditBox 在滑動選詞時會退出鍵盤的問題 [#4170]
    • 修復 Video Player 無法播放 data 子目錄中的視頻的問題 [#4045]
    • 修復使用 Mask 在某些機型上崩潰的問題 [#4279]
    2022.03.10

    V3.4.2

    發布時間: 2022.03.10

    在 v3.4.1 中我們完善了 2D 渲染組件的數據提交和合批策略,由于這些是觸及基礎的改動,所以引發了一些 Tiledmap,Graphics 的問題。并且 Spine 和 Dragonbones 在 Android 瀏覽器上性能沒有得到提升,這些問題都在 v3.4.2 版本中得到了集中的解決。

    另外,在社區的積極測試和反饋下,我們也修復了一些編輯器相關的體驗問題,比如腳本重新編譯時導致的內存泄露、大項目構建 iOS 平臺時資源拷貝的卡頓問題。需要再次感謝社區開發者們。

    請所有使用 v3.4 的用戶升級到 v3.4.2,將得到更優秀的穩定性和開發體驗。

    重要更新

    1. 修復腳本重新加載導致的內存泄漏問題,在腳本更新過程中編輯器不再有持續性的內存增長
    2. 修復一些編輯器構建相關問題
      • 修復勾選首包為遠程包后取消,可能導致原生平臺構建失敗的問題
      • 項目配置更改,可能導致構建后 md5 變化的問題
      • 修復勾選 MD5 后重復構建兩次 hash 值發生變化的問題
    3. iOS 平臺選擇 “跳過 XCode 工程更新” 時避免拷貝資源文件夾,修復打包時無資源的問題
    4. 提升原生平臺穩定性
      • 修復 Vulkan 后端在 Android 12 上的崩潰問題
      • 避免游戲在 Android Surface 銷毀時(進入后臺等情況)引發的崩潰和黑屏問題
      • 修復游戲從 Camera 返回時可能出現的崩潰問題
    5. 在 Spine 和 DragonBones 中使用共享的 VertexBufferAccessor,提升 GPU 提交 buffer 的性能
    6. 修復一些 v3.4.1 重構引入的問題。
      • 修復 SkeletalAnimation 在不調用 play 的情況下直接 setTime 無效的問題
      • 修復 2D 粒子在部分情況下會產生閃爍的渲染表現問題
      • 修復 Tiledmap 的渲染問題
      • 修復 Dragonbones 在設置位置后需要調用 `ArmatureDisplay.markForUpdateRenderData` 才可以正確更新的問題
      • 修復 Mask 對 Spine 和 Dragonbones 無效的問題
    7. 給引擎創建的默認場景添加天空盒(如果不需要天空盒的項目,請記得刪除場景中 LDR 和 HDR 的兩套天空盒資源)

    詳細更新說明

    Editor

    • 修復動畫時間軸右鍵事件幀后,查看紅線隨鼠標滑動而移動的問題
    • 修復編輯器重啟后,需要點擊運行才能預覽 web 項目的問題
    • 修復編譯原生模擬器 UI_GPU_DRIVEN 的報錯
    • 修復勾選 MD5 后重復構建兩次 hash 值發生變化的問題
    • 修復 prefab 數據里根節點 root 為 null 會導致報錯的問題
    • 優化屬性檢查器上部分屬性的順序
    • 修復 Canvas Camera 在編輯器中 resize 的問題
    • 修復選中節點后層級管理器不會自動展開的問題
    • 修復 Mac 上 num-input shift + wheel 功能失效的問題
    • 修復動畫編輯切換屬性軌道后偶現未及時更新數據的問題
    • 修復動畫編輯部分特殊分量軌道無法粘貼的問題
    • 修復腳本重新加載導致的內存泄漏問題
    • 修復項目配置更改,可能導致構建后 md5 變化的問題
    • 修復屬性檢查器上 resetComponent 后無法刪除的問題
    • 修復構建插件機制 BuildResult 查詢圖集資源路徑時的返回值錯誤問題
    • 修復勾選首包為遠程包后取消,可能導致原生平臺構建失敗的問題

    Engine

    • Shared vertex buffer accessor for Spine and DragonBones [10077]
    • Fix skeletal animation sample( ) does not work as intended [10006]
    • Fix DragonBones node can’t be moved in editor [10031]
    • Fix 2d particle rendering issue [10038]
    • Fix Tiled map rendering issue [10059]
    • Fix TiledLayer culling row and col [10035]
    • Fix MotionStreak updateColor bug [10055]
    • Add default skybox [10021]
    • Fix planar shadow z-fighting [10026]
    • Add OHOS platform detection [10028]
    • Fix skybox stretch in ortho projection [10045]
    • Fix releaseMapInfo error. [10062]
    • Add protection for invalid node.uiProps [10060]
    • Fix native platform mesh-render-data index error. [10071]
    • Optimize multi-touch on ByteDance platform [10086]
    • Fix canvas widget bug in editor [10052]
    • Fix renderData update bug when renderable2d is not rendering [10101]
    • Fix interface checking [10109]
    • Fix pointer event list manager [10084]
    • Fix custom class missing when the instantiate error [10128]
    • Fix bug for compress texture usage under Sprite grayscale mode [10129]
    • Fix getTiledTileAt cause layer show wrong. [10137]
    • Fix Node rotate API doc [10140]
    • Ensure RenderData.clear won’t break usability [10177]
    • Update editBox size when node resize [10188]
    • Fix iOS version detection on Wechat platform [10159]
    • Fix mask is not working for spine/db [10201]
    • Improve touch event performance by caching system info on ByteDance platform [10218]
    • Fix merge batches issue with multi canvas [10232]
    • Add JsbBridgeWrapper for OHOS [4204]
    • VK: fix android 12 crash [4217]
    • Supply a default context when surface destroyed [4222]
    • Use same mtx for write [4220]
    • iOS/mac skip POST_BUILD copy Resources folder procedure [4216]
    • Fix spine binary data read issue. [4229]
    • Fix loop audio would stop for ios system [4254]
    • Fix restart view size [4256]
    • Fix spirv incorrect name on binding [4259]
    • Fix app crash after switch back from Camera [4268]
    • Fix incorrect resize behavior on iOS [4265]
    2022.01.25

    V3.4.1

    發布時間: 2022.01.25

    在 v3.4.1 中,我們重點修復了 v3.4.0 發布后用戶反饋的問題,提升了穩定性。同時為了幫助開發者 v2.x 開發者升級到 v3,我們調整了 2D 渲染組件的合批策略,大幅度提升了 2D 渲染的整體性能表現,相比 v3.3 提升幅度可達到 20% - 70% 左右。性能測試結果我們也對比了 v2.x 版本,參考下面的對比圖,絕大部分測試的表現都已經和 2.x 逼近或持平,小部分超過。

    圖例講解:所有測試都是在中低端機完成,每張圖標的四個區間依次為 Android Web、iOS Web、Android WeChat、iOS WeChat。另外原生平臺上的整體性能提升在 3.6 的原生化版本中也會得到大幅度的優化,目前原生化的獨立分支已經合并到 3.6.0 的開發分支中了。

    另外,為了未來允許在微信小游戲上開啟 WebGL 2.0,我們也修改了微信平臺的構建選項,增加了實驗性質選項:支持跟隨項目模塊配置啟用 WebGL 2.0,默認情況下關閉縮減包體。如果選擇跟隨項目模塊配置,并且項目模塊中勾選了 WebGL 2.0 渲染后端,那么未來等微信環境支持 WebGL 2.0 即可成功啟用。

    3.4.1 經過了個把月的論壇公測,期間有很多熱心開發者(如 @ankoGo 和 @ankye)和我們保持了高頻度的線上交流,這些寶貴的反饋建議幫助我們提高了版本的成熟度,非常感謝大家!

    重要更新

    • 重構 2D 合批策略,RenderData 持有靜態 VertexBuffer 內存,優化 2D 渲染全平臺性能
    • 優化 2D 渲染組件狀態管理,UV 和 Color 改為立即填充,避免污染 VB 狀態
    • Material.copy 現支持接受 override 材質修改參數
    • 在微信上允許開啟 WebGL 2.0,為未來支持 WebGL 2.0 的微信版本做準備
    • 小幅度優化粒子系統運行性能
    • 修復編輯器啟動腳本過多的項目比較慢的問題
    • 修復編譯模擬器會出現報錯的問題
    • 限制 web 平臺 dpr 最大為 2,修復 Android Web 端因此導致的性能下降
    • 修復事件派發優先級,讓 UI 監聽器永遠優先于 input 事件監聽器
    • 修復陰影部分情況下性能下降的問題
    • 修復 iOS/macOS 第二次調用 restart 異常退出問題
    • 修復 Android 平臺進入后臺游戲邏輯停止的問題
    • 修復 SkeletalAnimation sample 的獨立使用問題
    • 修復動畫 crossFade 時的錯亂問題
    • 修復 TiledLayer 的顏色設置問題
    • 修復多 Camera 渲染到同一個 RenderTexture 上被覆蓋的問題
    • 修復原生平臺一些內存碎片問題
    • 修復 Label spacingX 屬性沒有序列化的問題
    • 修復 debug 模式 restart 后 profiler 消失的問題
    • 修復 burst 在暫停后重新播放表現不對的問題
    • 修復切換場景 UseHDR 按鈕,效果相反的問題
    • 修復 iOS & Mac Safari 不支持 USE_REFLECTION_DENOISE 的問題
    • 修復 Cocos Play 與微信平臺由 getSystemInfoSync 引入的性能下降的問題
    • 修復 Sphere Light 在 Android Web 上效果不正確的問題
    • 修復 windows 平臺 debug 模式下,三個 cocos 游戲同時運行時的崩潰問題

    已知遺留問題

    • Slider 在 ScrollView 中無法被平滑拖動的問題:計劃在 v3.4.2 修復
    • SkeletalAnimation 在不調用 play 的情況下直接 setTime 無效的問題:v3.4.2 修復方案
    • 2D 粒子在部分情況下會產生閃爍:v3.4.2 修復方案
    • Dragonbones 在設置位置后需要調用 `ArmatureDisplay.markForUpdateRenderData` 才可以正確更新:v3.4.2 修復方案

    詳細更新列表

    • Android: Java flush game thread tasks [4193]
    • Fixed iOS keyboard hiding issue [4185]
    • Fixed mem status [4179]
    • M1 deferred rendering issue: fbf & write to same texture not fully support [4174]
    • Fixed the problem of deferred pipeline multi-execution transparent queue [4168]
    • Improved mesh buffer to avoid iOS14 performance drop [10015]
    • Added sprite frame event off & fix renderData hash bug [10012]
    • Fixed sprite rect bug [10011]
    • Removed deprecated in error map [10007]
    • Protect meshBuffer max vertex count [10005]
    • Changed macro for meshBuffer [10001]
    • Fixed touch event on IMAGE STENCIL mask component [10000]
    • Fixed TiledLayer’s color setting [9997]
    • Enable model after playing instead of onEnable [9991]
    • Fixed EventDispatcherPriority, ensure UI have higher priority than input [9976]
    • Cleared attachment for editor camera render area [4164]
    • Removed local reference array [4161]
    • Fixed Lighting stage feedback loop [4157]
    • Removed unnecessary include [4153]
    • Fill vb with 0 when allocate [9989]
    • Fixed spriteFrame apply time [9987]
    • Added MeshRenderData.resize for changing both buffer size and IA size [9986]
    • Fixed tiled map [9980]
    • Particle performance improve [9979]
    • Separated IA range and buffer range in MeshRenderData [9978]
    • Fixed planar-shadow normal is zero [4165] & [9975]
    • Fix: keep children with same layer in editbox [9971]
    • Avoid one MeshRenderData upload repeat [9969]
    • Request IA by pool [9967]
    • Fixed skeleton animation cross fade/play won’t stop last animation [9965]
    • Set opacity all time [9959]
    • Fixed Opacity cascade [9958]
    • Fixed no planar shadow on mac [9953]
    • Fixed particle switch cpu / gpu bug caused by alignment space [9952]
    • Adjusted PhysX initialization [9641]
    • Removed redundant autoreleasepool [4102]
    • Closed uv_handle_t [4106]
    • updateLightingMap sync to native-engine [4109] & [9828]
    • Removed origin code for twice call to java method [4114]
    • Allow tick() in background [4081]
    • Fixed Android+WebGL PS struct variables has unexpected mediump precision [4120] & [9863]
    • Fixed shadow queue performance [4119]
    • Fixed memory leak [4115]
    • Optimize fixedArea mode culling process [4124]
    • Fixed windows text alias [4128]
    • Added JsbBridgeWrapper[4125]
    • Combined planar-shadow calculations [4127]
    • Multiple Cameras support rendering to the same RenderTexture [4132] & [9924]
    • Change define(CC_DIR_SHADOW) to uniform(cc_lightDir.w) [4129] & [9921]
    • Position Delete & Normal Compress in deferred pipeline [4135] & [9939]
    • Open ddx ddy extension on safari WebGL1 [9820]
    • Added profiler reset [9806]
    • Fixed terrain _updateHeight texcoord error [9809]
    • Added burst restart [9832]
    • Fixed UseHDR button & Skybox HDR status [9843]
    • Added decorator “serializable” [9848]
    • Restrict DPR on Web platform [9850]
    • Improved GPU particle performance [9847]
    • Disable multi_draw extension on mobile [9835]
    • Cache systemInfo on Cocos Play platform [9856]
    • Fixed skeleton model receive shadow macro error and toon shadow display errors [9836]
    • Fixed shadow queue performance [9862]
    • Fixed mask not working with spine [9864]
    • Fixed define syntax error [9870]
    • Detach from scene before destroying Model/Light [9869]
    • Fixed set frame rate on runtime [9874]
    • Material.copy accepts overrides [9881]
    • Label string setter optimization [9880]
    • Fixed Color.fromHex Bug [9867]
    • Changed ts template [9883]
    • Optimized fixedArea mode culling process [9878]
    • Modified builtin texture generation + particle unit test [9841]
    • Updated Scheduler API [9815]
    • Fixed readPixels [9900]
    • Fixed skybox RGBE macro get invalid in startup and mipmap count is overridden [9904]
    • Fixed bug: remove all actions by tag [9876]
    • Fixed audio bugs [9889]
    • Fixed particle index count 0 [9885]
    • Jsb-event-handler for event dispatch [9879]
    • Fixed bug of builtin default texture [9916]
    • Refactored communication between skinned mesh renderer and skeletal animation [9787]
    • Added extra steps to the destroy functions to update the cached resources in GFX [9875]
    • Combing planar-shadow calculations [9903]
    • Fallback of shadow supports on Baidu [9897]
    • Prefab: Support the persistent flag [9884]
    • Fixed particle capacity issue[9910]
    • Support screen.devicePixelRatio [9926]
    • Fixed skeleton animation component play or cross fade [9930]
    • Animation controller api document [9866]
    • Fixed event processor list updating [9932]
    • Fixed multi touch bug [9917]
    • Fixed MOUSE_WHEEL event can’t be swallowed by node [9931]
    • Fixed audio buffer memory leak on ByteDance and Web platform [9933]
    • Improved compatibility for string of SystemEventTypeUnion [9934]
    • Particle culling loop fix [9922]
    • Fixed keyboard event listening on mobile [9935]
    • Fixed pointer event sorting after activating node [9906]
    • Fixed culling deprecated module [9937]
    • Fixed cc_base.d.ts [9944]
    • Add cpu & gpu particle culling unit test [9945]
    • Fixed planar-shadow plane offset sign issue [9946]
    • Fixed spine typing [9942]
    • Static vertex buffer accessor refactor for Batcher2D [9802]
    • Revert deprecate system event [9941]
    • Reset swallow state after event handling [9950]
    • Fixed some spine bugs [9948]

    2022.01.21

    V2.4.8

    發布時間: 2022.01.21

    2.4.8 對近期發現的一些 2.x 相關問題集中進行了修復,重點提升了編輯器的使用體驗及引擎的穩定性,建議所有 2.x 用戶升級。此版本未對項目和插件的兼容性造成破壞,大家可參照 2.4.7 的升級說明進行更新。
    根據 3.0 版本正式發布時的計劃,我們仍會在 2022 年繼續提供關鍵缺陷修復。這些修復將只圍繞穩定性和可用性進行優化,因此不再建議新用戶或者新項目選擇 2.4,請統一使用 3.x 版本開發。

    Stack Changes

    Editor

    • 修復 Windows 在場景面板點擊鼠標中鍵后光標不會自動還原的問題
    • 修復在編輯器中移動節點層級時,若父節點 Scale 為 0 時出現的計算錯誤
    • 修復層級管理器中對節點命名時,鼠標框選文字的行為會變成拖動節點的問題
    • 修復彈出資源管理器面板后再嵌入主窗口時,搜索資源會出現資源數量翻倍的問題
    • 修復在編輯動畫時,將 Sprite 或 RichText 所在節點的 Active 設置成 False 后退出引起的報錯
    • 修復項目腳本數量非常多的情況下,預覽腳本可能編譯失敗的問題(不影響構建結果)
    • 修復 Android API 設為 31 引起的編譯失敗 [#4147]

    Engine

    • 允許在?PC?Web?平臺接收觸摸事件,用于在某些支持觸摸的 PC 上監聽 Touch 事件?[#9898]
    • 修復 ScrollView 下只有一個隱藏的子節點,可能引發棧溢出的問題?[#9914]
    • 修復 LabelShadow 顏色編輯時,場景不刷新的問題?[#9909]
    • 修復?Tween.stopAllByTag?只停止第一個匹配到 tag 的動畫的問題?[#9902]

    Native

    • 修復 WebSocket 消息被截斷的問題 [#3789]
    • 修復 Android JNI 調用可能導致游戲閃退的問題 [#4147]
    • 修復調用 Skeleton.setSkeletonData 導致 Node 的點擊事件不觸發的問題 [#366]
    2021.12.20

    V3.4.0

    發布時間: 2021.12.20

    版本介紹

    v3.4 是自 2021 年初 3.0 發布以來快速迭代后的一個年度收官版本,要的就是一個字:穩!這個版本研發和測試周期都比之前版本更長,也在社區進行了長達一個月的公開測試,在此也要感謝所有參與測試的開發者們!

    在 v3.4 中不僅增加了像 Marionette 動畫系統這樣的重要功能,而且在產品體驗、穩定性、性能優化、基礎架構層面都做了大量的工作。除此之外,我們還集中修復了一批社區反饋比較多的問題,解決了一些以前遺留的疑難雜癥。相信引擎團隊傾注心血奉獻給大家的 v3.4 版本會成為一個里程碑版本,更好得幫助開發者開發出優秀的游戲作品!

    重點介紹

    動畫系統 Marionette

    動畫系統是 3.4 中最重要的新功能,我們取名為 Marionette,意思是提線木偶,不僅形象得描述了它的作用,而且使用提線木偶的木偶劇還是源自于中國的傳統藝術形式,從唐代就出現,千年來流傳至今仍然是閩南地區重要的戲曲形式。借助 Marionette,我們也希望開發者能夠完美控制游戲角色,增強游戲通過角色敘事的能力。

    在 3.4 版本中,Marionette 已經支持動畫系統的基礎功能,包含狀態機、子狀態機、狀態機組件、觸發器變量、Blend Tree 等。當然,更完善的動畫系統能力還在迭代中,比如動畫層級和遮罩、人形骨骼和 IK 等能力已經在繼續開發之中。為了幫助大家學習 Marionette 動畫系統,我們也準備了詳細的文檔、[Demo]和視頻教程。

    編輯器體驗優化

    在編輯器體驗方面,我們做了大量的體驗細節優化和疑難雜癥的處理。功能和體驗優化包括:

    • 動畫編輯器支持標準貝塞爾曲線緩動預設,點擊選中曲線片段后點擊曲線預設即可應用
    • 新增矩形工具(Rect Gizmo)的智能對齊功能
    • 支持開發者自定義宏配置
    • 支持 RenderTexture 的 wrap mode,filter 等參數
    • 新增 Octree 空間管理加速結構,優化了視錐剔除性能,可在場景 inspector 中開啟

    光照模型和渲染優化

    v3.0 以來,Creator 一直在不斷積累和打磨渲染能力,v3.4 中為了增強引擎的氛圍感和畫面效果,也帶來了一系列重要的升級。尤其是光照模型的改進將使得引擎在光照表現層面更加精細。

    • 支持自動生成環境貼圖卷積圖用于漫反射計算

    手動設置環境光 vs 自動生成漫反射卷積圖

    • 支持 HDR 和 LDR 渲染切換(在場景節點 Skybox 配置中)

    關閉 HDR vs 開啟 HDR

    • 支持 IBL 采樣降噪(standard 材質中勾選 USE REFLECTION DENOISE)

    開啟 Denoise vs 關閉 Denoise

    渲染管線強化

    在渲染管線方面,FrameGraph 是從 v3.1 開始引入的基礎設施,經過幾個版本的迭代,在 v3.4 我們正式將 Forward 和 Deferred 管線都對接了 FrameGraph,下面是一個簡化的延遲管線 FrameGraph。

    目前引擎的延遲管線總共包含 2 個計算 pass,7 個渲染 pass,雖然不算復雜,但已經能凸顯 FrameGraph 的作用了。一方面簡化了管線層的代碼組織,降低了維護成本;另一方面也降低了開發者定制管線時的心智成本?;?FrameGraph,華為 HMS CG Kit 團隊在 v3.4 中繼續在延遲管線中貢獻了 Clustered Light Culling 用于優化動態光源計算性能,可在移動端支持同屏數百個動態光源(麒麟 990 芯片在 Sponza 場景運行 1000 盞動態光源可達到 40 fps)

    另外,渲染管線中的 Subpass 也是基于 FrameGraph 來實現的,FrameGraph 的第二大優勢就是延遲模式渲染(不同于延遲渲染管線),引擎可以先分析渲染流程,進行優化之后再執行完整渲染流程。目前移動端的 GPU 都是和 CPU 共享系統內存的,功耗的一大熱點就是對于顯存的讀寫。而 Subpass 優化就是充分利用 GPU 的 Tiled 緩存來降低顯存讀寫功耗,當兩個相鄰渲染 Subpass 的寫入資源和讀取資源是同一份幀內資源,且不會被其他 pass 引用時,這個資源就只會通過 Tiled 緩存來讀寫,不會讀寫內存,可以明顯降低功耗。這種對資源和渲染流程的自動推導正是 FrameGraph 帶來的優勢。

    重要 Fix 和性能優化

    正如前文介紹,穩定性是 v3.4 版本的首要目標,所以我們也修復了一些困擾多時疑難雜癥,將引擎的穩定性推上了一個新的高度。下面列舉一些比較重要的修復

    • 修復了動畫編輯過程中使用 Active 可能會導致數據丟失的嚴重問題
    • 修復場景在部分異常報錯的情況下,會出現 MissingScript 組件,導致場景啟動失敗的問題
    • 修復 iOS 重復退出進入造成的崩潰
    • 修復 GLES3 后端在部分芯片上材質編譯導致的崩潰問題
    • 修復 Vulkan 后端在一些低端機上的黑屏問題(通過更準確地下發 barrier 和 image layout 轉換)
    • 修復 Vulkan 后端在一些低端機上的崩潰問題(通過修改 shader 繞開一些驅動支持不完善的語法)
    • 修復 Vulkan 后端在轉屏或分屏時崩潰或分辨率不對問題
    • 修復 Vulkan 后端在使用大量高分辨率貼圖時的崩潰問題
    • 修復少數設備 Chrome 上的黑屏問題
    • 修復 mountedChlidren 里有 PrefabInstance 可能會導致數據錯誤的問題
    • 修復復制 Prefab 時可能出現的 fileId 沖突,會進而導致數據丟失和報錯
    • 修復 Prefab 中引用了被刪除的元素數據,導致序列化了很多冗余數據的問題
    • 修復 Undo 可能導致 prefab 內的部分 override 數據丟失的問題
    • 修復地形還原的時候,可能出現數據錯誤的問題
    • 修復運行時切換場景后 Label 引用的 GPU 內存沒有釋放的問題
    • 修復 InstanceBuffer 和 BatchedBuffer 由于持有全局 Map 導致的內存泄露問題
    • 修復部分小游戲平臺全局 precision 指定失敗導致的大量問題,比如陰影采樣問題
    • 修復場景烘焙的情況下原生平臺沒有傳遞正確的 baked 參數
    • 修復 GLES 下有概率會出現的模型閃爍問題(通過優先使用 glMapBufferRange 而非 glBufferSubData)
    • 修復當模型骨骼權重中有 NaN 時在不支持浮點貼圖的設備上花屏的問題(通過在導入期均分所有 NaN 權重)
    • 修復原生端預烘焙動畫 Instancing 處理后大批量數據同步崩潰
    • 修復多個同名插件且注冊了資源,會導致腳本編譯失敗的問題
    • 修復原生平臺重新構建后無法更新遠程資源包內容的問題(來自論壇反饋
    • 修復原生選擇加密構建后,原始代碼仍然被打進 apk 的問題 (來自論壇反饋
    • 修復自動圖集使用壓縮紋理后,修改圖集配置重新構建仍使用緩存;

    除了重要問題的修復以外,引擎的整體性能也得到了一定的提升,比如 2D 渲染和合批效率、物理性能、iOS Web 的 3D 場景性能、Android 部分場景。下面是 2D 渲染的部分測試結果:

    已知缺陷和潛在兼容問題

    構建模板升級

    由于調整了 web 平臺屏幕適配的相關邏輯,我們改動了 Web 相關的 index.html 模板,這里包括預覽模板、構建 web 平臺模板。

    我們已經在引擎內部做了相關的兼容處理 。

    這個處理會確保 index.html 內部有一個固定的 div 結構

    <div id="GameDiv">
      <div id="Cocos3dGameContainer">
        <canvas id="GameCanvas"></canvas>
      </div>
    </div>
    

    如果缺失了 GameDiv / Cocos3dGameContainer,運行時會自動補齊

    注意:這個 div 結構是引擎內部管理的私有結構,我們希望保持這個結構完整且不被定制。如果在這個結構內加入了其他 web 標簽,可能會導致一些不確定的兼容問題。

    IBL 采樣降噪

    新增的 IBL 采樣降噪算法目前對 iOS Web 環境兼容有一些問題,由于發現較晚就沒有在版本中合并了,會在后續的 3.4.1 中完成對 iOS Web 的支持

    延遲管線缺陷

    目前延遲管線仍然在高速迭代過程中,功能和平臺兼容性還存在一些問題,暫不建議在項目中實戰使用。目前已知的一些問題包括部分粒子混合模式無法渲染,暫不支持 builtin-toon 材質,部分低端平臺和設備有兼容性問題,不支持聚光燈陰影,2D & 3D 相機混排問題等。

    更新列表

    Feature

    • 【Animation】新增 Marionette 動畫系統,支持狀態切換、子狀態機、Blend Tree 等角色動畫必要功能
    • 【Animation】動畫編輯器支持標準貝塞爾曲線緩動預設
    • 【Animation】曲線關鍵幀支持 Broken 斷開關聯分開控制左右控制桿
    • 【Scene】支持自動生成環境貼圖卷積圖用于漫反射計算
    • 【Scene】新增矩形工具(Rect Gizmo)的智能對齊功能
    • 【Scene】新增 Octree 空間管理加速結構,優化了視錐剔除性能[文檔]
    • 【Scene】新增 GPU Occlusion Query 剔除(默認關閉),可以通過`root.pipeline.setOcclusionQueryEnabled(true);` 開啟【Project】支持開發者自定義宏配置[文檔]
    • 【Scene】新增原生平臺內存泄漏檢測系統(默認關閉),可以通過` #define USE_MEMORY_LEAK_DETECTOR 1`開啟[文檔]
    • 【Builder】構建支持外部開發者注冊自定義紋理壓縮處理工具
    • 【Builder】Mac / iOS 平臺構建添加 "跳過 Xcode 工程更新" 選項, 避免覆蓋對工程文件的修改
    • 【Builder】合并安卓、Windows 的 GLES 選項,不允許單獨選擇 GLES2
    • 【Particle】支持粒子發射器剔除,支持離線自動計算,也支持手動調整(RenderCulling 模塊)
    • 【Particle】支持粒子朝向和節點朝向統一
    • 【Asset】支持 RenderTexture 的 wrap mode,filter 等參數
    • 【Asset】RenderTexture 添加 readPixels 接口
    • prefab 支持批量取消關聯
    • 【Asset】FBX 導入器的動畫烘焙速率新增“自動”選項
    • 【Asset】FBX 導入器新增選項:優先使用文件時間范圍
    • 【Asset】SpriteFrame 資源面板上的 packable 屬性除了影響自動合圖以外將會影響自動圖集的構建處理,關閉后不參與構建合圖
    • 【Asset】地形模塊支持自動 LOD
    • 【Graphics】支持 IBL 采樣降噪(standard 材質中勾選 USE REFLECTION DENOISE)
    • 【Graphics】更準確的 Gamma Correction
    • 【Renderer】支持 HDR 和 LDR 渲染切換(在場景節點 Skybox 配置中)
    • 【Renderer】前向和延遲渲染管線均基于 FrameGraph 和 subpass 重構
    • 【Renderer】gfx 封裝 swapchain 公開接口,支持多窗口應用
    • 【Renderer】延遲管線使用 Clustered Light Culling 優化動態光源計算性能,[參考 Demo]
    • 【Renderer】延遲管線支持設置離屏 FBO 分辨率縮放
    • 【Renderer】延遲管線支持 FXAA 抗鋸齒
    • 【Renderer】延遲管線支持簡易 Bloom 后處理特效
    • 【Scripting】支持 @requireComponent 傳入數組
    • 【Scripting】新增接口 JsbBridge 簡化調用 Java 代碼和 ObjC 代碼的使用,參考[展示用例](https://github.com/cocos-creator/example-3d/blob/v3.4/native-script-bridge/README.md)
    • 【PAL】新增 input 模塊,未來將替代 `systemEvent`,具體參考 [Event Input 文檔]和 [Event Node 文檔]
    • 【PAL】在 `EventMouse` 和 `EventTouch` 上支持 `preventSwallow` 屬性,支持事件穿透派發:`event.preventSwallow = true`
    • 【PAL】支持 sys.hasFeature() 接口查詢平臺特性是否支持

    Improvement

    • 【Scripting】升級原生所依賴的 v8 引擎到 v9.1.269
    • 【Renderer】多光源收集的性能優化
    • 【Renderer】優化 GLES/WebGL 的 RT 性能
    • 【Renderer】優化原生內存/顯存使用(通過周期性調用 framegraph gc)
    • 【Graphics】修復半透明物體的光照和陰影計算
    • 【Graphics】優化霧效,將計算遷移到 Fragment Shader 中,保障正確的霧效過渡
    • 【Graphics】禁用半透明物體的多光源照明
    • 【Scene】為世界坐標軸加上坐標軸文字
    • 【Scene】地形編輯器增加選擇模式
    • 【Physics】優化了 PhysX 在原生平臺的包體
    • 【Physics】PhysX 現已支持 M1 設備
    • 【PAL】優化 Web 端方向適配,以構建面板選擇的方向為主,無視瀏覽器方向
    • 【PAL】在 Web 和 小游戲端,立即派發輸入事件,解決一些用戶交互權限的問題
    • 【PAL】為所有平臺和模擬器更換了全新的 App 默認圖標
    • 【PAL】現在 iOS 平臺構建會根據橫屏或豎屏選項引入相應的默認Launchscreen 圖片(若更改后未及時生效需要重啟設備清理緩存)
    • 【Asset】修復 FBX 動畫導入尾幀丟失的問題
    • 【Asset】修復擴展名為大寫的時候,資源 change 通知可能丟失的問題
    • 【Asset】解決新增資源可能沒有發送 add 事件,導致 assets 面板可能一直等待的問題
    • 【Builder】構建配置服務器地址改為記錄在 settings.json 內,方便動態更新
    • 【Builder】新建自動圖集,將會默認開啟在 Bundle 內的剔除選項(優化需求
    • 【Extension】插件管理器的開發者面板允許導入除了當前項目或者全局目錄以外的插件
    2021.11.24

    V2.4.7

    發布時間: 2021.11.24

    工欲善其事,必先利其器。經過長時間的準備和測試,2.4.7 版本終于發布了,感謝所有給予我們寶貴反饋的小伙伴們!在此次更新中,我們對近期發現的一些 2.x 相關問題集中進行了修復,重點提升了編輯器的穩定性、兼容性,建議所有 2.x 用戶升級。

    在 2.4.5 中,我們為了兼容 Mac M1 盡快升級了編輯器底層的 Electron,導致了開發者的部分插件出現異常,很抱歉給大家造成了不好的體驗。針對有關問題,我們在近期進行了大量的專項測試,將兼容性適配代碼集中匯總到了 2.4.7,最終為開發者抹平了 Electron 版本的差異,并且確保不會引入新的相關問題。

    在之后的版本中,不論是 2.x 還是 3.x,我們都將秉持兼容第一的原則,并且持續驗證 Cocos Store 中的插件兼容性。盡可能在基礎設施變化時不影響項目、插件的運行,減少適配成本,提升升級體驗。

    根據今年 2 月 7 日 3.0 版本正式發布時的計劃,2.4 做為 LTS 版本將在今年繼續提供缺陷修復。同時明年全年,我們還將持續關注 2.4 的關鍵問題和重大的平臺適配問題,不定期更新版本,支撐線上項目的安全運營,請大家放心。

    再次集中解答一下關于 3.x 的升級問題:

    • 新項目不再建議基于 2.4,請統一使用 3.x 版本進行開發,我們會一如既往地優化 3.x 的開發體驗,關注輕量級游戲的包體和效率,支撐好 2D、3D 等不同品類的游戲開發。
    • 當前 2.x 項目如果已到開發中期,或者即將上線,不必升級 3.x。
    • 當前 2.x 項目如果還在開發前期,可以評估是否需要升級 3.x。如果確認一定要升級,可以使用 Creator 提供的 2.x 資源導入工具。此工具將支持舊項目資源完美導入,以及代碼的輔助導入。代碼輔助導入會把 js 轉換成 ts,添加組件類型聲明、屬性聲明及函數聲明,組件在場景中的引用都會得到保留,并且函數內部的代碼會以注釋的形式導入進來,可以減輕開發者的升級難度。詳細的升級說明請參考 升級指南。如果開發者們在升級中遇到困難,歡迎向我們反饋,我們會盡力協助。

    Stack Changes

    • 升級編輯器的 Electron 版本到 13.1.4。解決了 Windows 上部分用戶頻繁出現的 WebGL 崩潰問題,還支持了 M1(Apple Silicon)的原生 ARM 指令集,建議所有 M1 用戶升級以獲得更好的性能。詳見升級說明。
    • 升級 Android 工程 Gradle 版本到 4.2.2 版本,詳見升級說明。

    Editor

    • 修復 Prefab 打開時點擊保存,可能覆蓋場景數據的問題
    • 修復編輯器下刷新腳本時,若無場景切換操作則內存會持續增長的問題,感謝 isilent
    • 修復重復構建部分文件 MD5 可能發生變化的問題
    • 修復 2.4.5 出現的部分第三方插件 ui-section 內 header 使用 class 注冊的語法不兼容的問題
    • 調整構建時的資源壓縮操作拷貝構建模板和 `beforeFinish` 事件之后
    • 修復構建后修改腳本并綁定節點后再次構建,運行時綁定內容可能為空的問題
    • 修復資源管理器,搜索后鍵盤上下選擇節點錯誤的問題
    • 修復在資源管理器全選 audio-clip、sprite-frame、texture 后拖動面板會報 resize 錯誤的問題
    • 修復聚焦場景后,選中節點無法刪除的問題
    • 修復預制體自動同步彈窗狀態無法保存的問題
    • 修復節點上 Color 等屬性改動后,使用撤銷和重置節點屬性無效的問題
    • 修復資源路徑或項目路徑中帶有括號時,打開編輯器出錯的問題
    • 修復點擊 Markdown 中的超鏈接失效的問題
    • 修復 Prefab 未修改保存后數據發生變化的問題

    Engine

    • 修復預加載沒有下載自動圖集的圖片的問題
    • 修復修改父節點后,節點的透明度級聯計算錯誤的問題 [#9322]
    • 修復 Scroll View 同時到達水平和豎直邊界時,沒有正確觸發事件的問題,感謝 zty8023ys [#9445]
    • 修復 Mask 組件在運行時調整節點大小無效的問題 [#9444]
    • 修復 Graphics Bezier 曲線的重繪問題,感謝 caogtaa [#9194]
    • 修復 EditBox 在 PhoneNumber 模式下,鼠標滾輪導致數字為負數的情況,感謝 wanghaha1991 [#9138]

    升級說明

    Cocos Creator 對項目的升級操作是不可逆的,請在升級前提交或備份舊版項目。絕大多數項目通常都能自動升級,但因為項目難免存在特殊性,開發者應該根據項目自身需求,提前對新版本引擎進行試用和評估。此外,出于穩定性考慮,建議即將上線或已上線的項目謹慎升級。以下是升級說明,如果開發者們在升級中遇到困難,歡迎向我們反饋,我們會盡力協助。

    從 < 2.4.7 版本升級

    • 從 2.4.7 開始,安卓工程的 Gradle Plugin 版本升級到了 4.2.2。此次升級調整了 Android Instant 工程的目錄結構,對普通 Android 工程沒有影響。我們移除了 js-template-link/frameworks/proj.android-studio/game 與 js-template-default/frameworks/proj.android-studio/game 目錄。game 目錄中的內容與 instantapp 目錄已合并進 instantapp 目錄,如果有對應的模板定制的內容,需要遷移至 instantapp目錄中。
    • 從 2.4.7 開始,編輯器底層 Electron 升級到了 13.1.4,我們為 Electron 自身的大部分接口變動進行了兼容處理,例如 BrowserWindow 啟動默認值、shell.openItem、shell.moveItemToTrash 以及部分 Node.js 環境內的數據。但基于 Electron 官方的安全性建議,如果插件使用到了 <webview>,請通過 <webview nodeIntegration></webview> 顯式開啟 Node.js 支持。如開發者還遇到 2.4.7 引入的其它插件兼容性問題也歡迎向我們反饋。

    從 < 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 節點來實現。為了統一使用體驗,進一步優化引擎底層實現,我們在 3.0 中廢棄了 Skew 屬性。

    從 < 2.0 版本升級

    打開 1.x 項目的話,場景等所有資源將會自動升級,代碼中的廢棄接口從 2.3.3 開始將會在保持兼容的基礎上同步輸出報錯。升級方式可參考《1.10 資源升級指南》《2.0 升級文檔》進行調整。

    2021.10.11

    V3.3.2

    發布時間: 2021.10.11

    Hightlight

    該版本主要功能是讓引擎構建出來的原生應用可以支持 iOS 10+。為了支持 iOS 10+,引擎代碼去除了對 C++17 的依賴。

    引擎的有些功能依賴 C++17,有些功能對 Android API 有要求。為了方便開發者使用,編輯器的功能配置界面對于這些依賴進行了提示。比如,Android 使用延遲管線時,要求 Android API 21+,如果配置選擇使用延遲管線,編輯器會提示需要的 Android API 版本:

    當然了,我們還提供了完整的文檔說明各個功能模塊對于 Android API 和 C++ 版本的要求。詳細信息可以參考該文檔說明。

    重點更新列表

    • Store 下載增加了進度

    問題修復

    • 原生端 GPU Instancing 材質切換導致無法渲染
    • 修復 curve 組件 Two Curve 模式時 muti 無法修改的問題
    • 修復 prefab 修改模式下,undo 后立即保存可能丟失 override 的問題
    • 修復編輯 prefab 資源時添加 UI 節點出現的 UITransform 組件或 Canvas 節點問題

    已知問題

    • Topon 和 Tradplus 這兩個 Service 在構建 iOS 時會出現異常,我們將在近期通過熱更新修復

    升級說明

    從 < 3.1.0 版本升級

    • 從 v3.1 開始,UITransform 組件的 priority 屬性已棄用,若需要調整節點樹的順序請使用 setSiblingIndex 方法。在 v3.1 之前通過代碼創建并依賴 priority 屬性的節點可能會出現節點樹表現和之前不一致的問題,請手動調整。
    • RenderTexture 在不同平臺上會出現正反不一致的情況,為了解決這個問題,Creator 為 effect 新增了 SAMPLE_FROM_RT 宏,在使用 RenderTexture 時,需要將 SAMPLE_FROM_RT 宏設置為 true,各后端便會統一適配至正確的效果。
    • 在 v3.1 中材質 Shader API 與 v3.0 有一定的差異,請參考 v3.0 材質升級指南v3.1 材質升級指南 進行手動升級。

    從 < 2.4.5 版本升級

    Cocos Creator 3.x 版本已經正式發布,2.4 版本將做為 LTS(長期支持)版本,提供后續兩年的持續更新!在 2021 年,2.4 將繼續更新版本,提供缺陷修復和新的小游戲平臺支持,保障大家的項目成功上線;在 2022 年我們還將為開發者持續提供 2.4 的關鍵問題修復,保障已上線的游戲平穩運營!因此,

    • 現有的 2.x 項目可以安心繼續開發,無需強制升級 3.0。
    • 現有的 2.x 項目因項目需求如想升級到 3.x,可以使用 Creator 提供的 2.x 資源導入工具。此工具將支持舊項目資源完美導入,以及代碼的輔助導入。代碼輔助導入會把 js 轉換成 ts,添加組件類型聲明、屬性聲明及函數聲明,組件在場景中的引用都會得到保留,并且函數內部的代碼會以注釋的形式導入進來,可以減輕開發者的升級難度。詳細的升級說明請參考 升級指南。
    • 新項目則建議使用 3.0 版本開發,我們會不斷優化 3.0 的開發體驗和運行效率,支撐好 2D、3D 等不同品類的重度游戲順利上線。

    Cocos Creator 對項目的升級操作是不可逆的,請在升級前提交或備份舊版項目。絕大多數項目通常都能自動升級,但因為項目難免存在特殊性,開發者應該根據項目自身需求,提前對新版本引擎進行試用和評估。此外,出于穩定性考慮,建議即將上線或已上線的項目謹慎升級。如果開發者們在升級中遇到困難,歡迎向我們反饋,我們會盡力協助。

    2021.9.17

    V3.3.1

    發布時間: 2021.9.17

    本次更新修復了一些已知問題,Cocos Creator 將持續優化性能,為開發者帶來更好的使用體驗!
    以下是詳細更新內容。

    編輯器

    • 優化微信字節面板上物理實驗室選項的顯示,新建微信構建任務時,將會默認開啟 Wasm 物理系統。開啟后,將會覆蓋項目設置的物理后端選擇
    • 修復若干動畫編輯器操作問題,包含:
      • 部分類型的動畫沒有正確插值的問題
      • 復制軌道時曲線數據沒有復制的問題
      • 無法連續操作選中關鍵幀屬性軌道
      • 存在滾動條時添加關鍵幀位置錯誤
      • 多選關鍵幀后點擊在關鍵幀位置移動異常
      • 修復跨節點跨屬性粘貼關鍵幀數據失敗
    • 修復完善粒子曲線相關控件:包含 Bursts 屬性無法正常添加、包含 Constant 模式的曲線顯示異常、優化 Two Curve 的顯示、移除關鍵幀后曲線顯示不正確
    • 修復 joint-texture-layout 在命令行構建時無效的問題(會導致運行時加載失?。?/strong>
    • 修復創建的物體中 Component 的 FileId 相同的問題
    • 修復自動圖集與 renderTexture 資源在同一文件夾時,無法正常預覽和構建
    • 自定義引擎設置按編輯器版本區分存儲
    • 修復 Prefab 中的腳本修改后沒有及時更新的問題
    • 修復 Prefab 編輯模式下創建 ui 節點存在的問題
    • 修復編輯 Prefab 資源時資源被刪除,此時保存不會自動轉另存的問題
    • 修復 Hierarchy 上根節點相關的全選和復制的功能問題
    • 修復場景切換時 Hierarchy 調用了 db 接口報錯的問題
    • 修復自定義腳本模板文件名稱不能是純數字的問題
    • 修復 assets 面板批量刪除資源時 db 報錯的問題
    • 支持 assets 面板新建資源時對輸入的名稱能過濾其后綴的機制
    • 修復導入失敗的資源,每次焦點重新回到編輯器都會報一次錯誤的問題
    • 修復場景中舊的 private node 會造成警告的問題
    • 修復 scene 資源升級會在末尾增加一個空行的問題

    引擎

    • 修復粒子系統實例化性能下降的問題
    • 修復 iOS 14 Web 平臺的運行性能問題
    • 優化 Shadow Culling 算法,升級后需要使用 resolution 和 distance 來調節陰影質量
    • 修復聚光燈陰影上的計算錯誤
    • Shadow bias 改為使用世界空間單位,調節起來會更直觀
    • 修復 Android 11 API Level 30 環境下的崩潰問題
    • 修復了 AnimationClip.createWithSpriteFrames 動態創建動畫失敗的問題
    • 修復 inverseTransformPoint 函數錯誤
    • 修復 widget 對 target anchor 變化的監聽
    • 修復 Editbox backgroundImage 屬性在 SpriteFrame 的修改時沒有被同步的問題
    • 回滾對  EventKeyboard.isPressed 屬性的棄用
    • 修復 button 的 scale 模式下無法設置節點 scale 的問題和無限放大的問題
    2021.08.24

    V3.3.0

    發布時間: 2021.08.24

    What's new

    性能優化

    在 3.3 版本中,我們繼續重點優化了微信小游戲平臺的加載性能和運行性能。所有內部項目升級后微信云測啟動性能分都可以達到 80 分以上。

    同時,我們進一步提升了原生引擎的綁定層級,在渲染管線之上的渲染場景部分也完成了原生化,光源、模型等渲染對象的收集過程使用原生實現,進一步提升了原生平臺的性能。

    還有一個附帶的好處,由于綁定層級的向上遷移,一些底層的數據共享機制被解除了,比如 Pass,SubModel 等。這使得 JS 引擎上層的實現尤其是 UI 和 2D 渲染合批相關的數據更加簡化,部分高頻操作的數據結構從 TypedArray 還原為直接量屬性,使得 Web 和小游戲平臺的性能也得到了可見的提升。

    優化場景編輯體驗

    1. 優化場景相機的漫游模式,并增加了加速開關

    2. 增加一個場景燈光的開關(默認打開)

    3. 增加模型的最大最小坐標顯示

    4. 增加 Transform Gizmo 的吸附功能(通過移動,旋轉,縮放的Gizmo操作時,按住 Ctrl 鍵,就可以按設定的步長進行值的增長

    5. 優化大項目使用體驗:降低編輯器內存使用,避免崩潰,優化卡頓

    新版動畫編輯器和動畫數據升級

    目前動畫編輯器已在動畫編輯器內置曲線編輯,與時間軸匹配,并支持任意關鍵幀之間的時間曲線編輯。

    同時,在 3.3 中,我們也完成了動畫數據的升級:引入了新的基礎曲線類,重構了 AnimationClip,統一了動畫和粒子系統使用的曲線數據。這些工作都是為了后續的完善動畫系統而準備的,在后續版本我們將支持動畫狀態機編輯,Blend Tree 動畫融合等高級功能。

    除此之外,動畫編輯器還完成了以下工作:

    • 支持動畫根節點隱藏后的動畫顯示編輯;
    • 優化動畫編輯器關鍵幀與小紅線的遮擋關系以及關鍵幀大小、選中顏色等;
    • 動畫編輯器支持按住 shift + 鼠標滾輪滾動來移動時間軸;

    平臺支持和構建系統優化

    在 v3.3 中,我們加入了 windows x64 的構建選項,未來將逐步廢除 win32 平臺的構建。

    在構建面板上,我們也做了諸多優化:

    • iOS 構建填配置選項支持目標 iOS 版本和簽名相關的 developer id 配置
    • 構建勾選 md5Cache 后,支持給腳本添加 md5 后綴,確保版本更新;(來自論壇反饋
    • 由于微信部分版本已經支持 astc,目前開放了小游戲平臺 astc 的壓縮紋理配置;
    • 偏好設置 - Build 新增構建日志打開方式選項;
    • 構建插屏配置面板,支持直接拖拽文件系統的圖片放置;
    • 命令行構建支持傳入 logDest 指定日志輸出路徑;
    • 由于 Mac上退出碼位數的限制,對命令行構建退出碼做了修改;
    • 原生平臺構建后將不能二次修改游戲名稱;

    陰影效果和設置優化

    在之前的版本中,陰影的配置一直是一個比較讓開發者困惑的功能,我們已經有完整的規劃,正在逐步完善中,v3.3 會首先簡化陰影的配置,優化軟陰影算法,修復陰影的部分效果問題。配置上的調整包含:

    • Shadow color 被遷移為 Shadow saturation 的灰度調節選項,會自動遷移老版本的 alpha 通道
    • 軟陰影選項從之前的 X9,X25 等改為 Soft 和 Soft2X
    • 簡化陰影貼圖的尺寸設置為 High,Medium,Low
    • 去除 SelfShadow 選項,現在都會默認開啟自陰影計算

    v3.1

    v3.3

    理系統完善

    繼 v3.1 支持 PhysX 物理后端以來,多套物理引擎的選擇和使用也成為了我們重點關注的使用體驗,在 v3.3 中我們不僅加強了物理功能,還盡可能統一了不同物理后端的物理表現。

    • 支持 CCD 連續碰撞檢測功能
    • 增加碰撞體最小體積控制,避免節點零縮放導致的一系列問題
    • 支持 PhysX 物理打包字節平臺更靈活的配置選項
    • 支持 Bullet 物理中全局控制是否允許自動休眠
    • 支持 Bullet 物理中射線檢測過濾 trigger 碰撞體
    • 修復 Bullet 物理中剛體無附加現狀的 local inertia

    其他

    1. 音頻系統在 v3.1 移除所有 AudioClip 資源上的播放控制接口后,開發者頗為不滿,在 v3.3 中我們將播放控制接口以標記廢棄的方式添加回 AudioClip 資源。我們仍然希望所有開發者能切換到使用 AudioSource 組件的方式來播放音頻,這對于未來的音頻系統功能強化至關重要。
    2. 輸入事件以前是接收到事件就進行派發,如果事件響應邏輯復雜可能會影響到幀回調,導致幀率不穩,v3.3 已調整為幀間記錄事件隊列,統一在主循環中處理事件隊列。
    3. View 和 Screen 接口進行了簡化,廢棄了一些平臺相關接口,將部分 View 的窗口控制功能統一到 Screen 上

    重點更新列表

    Editor

    • 新版本動畫時間曲線編輯和動畫編輯器體驗優化
    • 各模塊曲線編輯器統一:粒子、動畫等
    • 優化粒子曲線的編輯操作,添加重置坐標移動范圍按鈕,支持直接右鍵編輯關鍵幀點位置
    • 場景編輯器體驗優化
      • 增加一個 場景燈光 的開關(默認打開)
      • 優化場景相機的漫游模式,并增加了加速開關
      • 增加模型的最大最小坐標顯示
      • 增加 Transform Gizmo 的 吸附功能
    • 支持 HDR 文件導入,引擎內部處理 RGBE 編解碼
    • 編輯器性能和體驗優化
    • 當 Image 資源被改為 SpriteFrame 類型后,自動修改 texture 的 Clamp 配置為 CLAMP_TO_EDGE,避免邊緣混合黑邊問題
    • 支持在帶動畫模型的屬性面板上直接編輯動畫事件
    • 修正編輯器內的資源泄露問題,降低內存占用
    • 針對微信小游戲平臺開啟 ASTC 壓縮紋理配置
    • 優化 hierarchy 面板性能,增加 prefab 節點直接進入 prefab 資源的編輯功能
    • 優化 console 面板性能,修復大量 log 數據拖慢啟動速度的問題
    • Color picker 支持 color gamma 矯正預覽
    • Inspector 中支持組件屬性的分組顯示,使用 group 裝飾器
    • inspector 編輯節點增加復制節點世界坐標
    • 支持顯示烘焙結果的 rgb 通道的單個灰度圖或者通道的組合
    • 支持自定義的腳本模板,同時在生成腳本時可以使用部分預設變量
    • 支持 Windows 平臺上帶中文的安裝目錄
    • iOS 構建填配置選項:目標 iOS 版本,簽名相關的 developer id
    • Windows 平臺添加生成平臺選項,支持 x64 和 win32 選項
    • 支持腳本 import map
    • 添加了清理代碼緩存的功能,入口位于菜單:[開發者]-[緩存]-[清理代碼緩存] 
    • 編輯器右下角添加引擎版本與編輯器版本不一致的提示
    • Electron 升級到 13.1.4
    • 修復 m1 cpu 的設備構建項目時偶現的進度條停止問題

    Engine

    • 優化標準光照模型中的 AO 計算
    • 陰影參數和渲染優化
      • 修復陰影效果,優化陰影邊緣虛化算法
      • 將 Shadow Color 遷移為 Shadow Saturation 單通道選項,會自動遷移老版本的 alpha 通道
    • 軟陰影選項從之前的 X9,X25 等改為 Soft 和 Soft2X
    • 簡化陰影貼圖的尺寸設置為 High,Medium,Low
    • 去除 SelfShadow 選項,現在都會默認開啟自陰影計算
    • 引入通用曲線類(Curve)
    • 重構 AnimationClip,動畫數據重構升級:為動畫狀態機和復雜動畫融合做好準備
    • 優化微信小游戲首屏渲染速度
    • 修復了 UI 透明度級聯導致的渲染問題
    • 修復了 Label 重復加入動態合圖的問題
    • 粒子曲線使用統一的 Curve 數據
    • 物理引擎
      • 統一各個物理后端的行為表現
      • 支持 CCD 持續碰撞檢測
      • 增加碰撞體最小體積控制,避免節點零縮放導致的一系列問題
      • 支持 PhysX 物理打包字節平臺更靈活的配置選項
      • 支持 Bullet 物理中全局控制是否允許自動休眠
      • 支持 Bullet 物理中射線檢測過濾 trigger 碰撞體
    • 烘培庫支持 mac m1 cpu 設備
    • 字節小游戲音頻使用 WebAudio 接口實現
    • 事件系統
      • 所有輸入事件歸攏到游戲主循環中處理
      • AudioSource 支持監聽音頻開始和結束事件 AudioSource.EventType.STARTED & AudioSource.EventType.ENDED
      • SystemEventType 和 macro.KEY 已經廢棄了,改用 SystemEvent.EventType 和 KeyCode
      • 廢棄了 SystemEventType,以及 SystemEventType 底下的一些系統事件無關的枚舉,請使用 SystemEvent.EventType
      • 廢棄靜態屬性 Event.TOUCH, Event.MOUSE, Event.KEYBOARD, Event.ACCELERATION
    • 簡化廢棄部分 view 和 screen 接口,統一在平臺適配層(PAL)中實現
      • 廢棄 view.adjustViewportMeta 和 view.isAutoFullScreenEnabled
      • 廢棄 view.enableAutoFullScreen,請使用 screen.requestFullScreen
      • 廢棄 cc.winSize,請使用 view.getVisibleSize
      • 廢棄 screen.autoFullScreen,請使用 screen.requestFullScreen
      • 廢棄 screen.disableAutoFullScreen
    • 修復移除 Spine 動畫可能導致的內存泄露(感謝 Github PR from @hailua54)

    Infrastructure

    • 渲染場景模塊原生化:優化原生平臺性能
    • 使用可控的離屏 FrameBuffer 進行內容渲染
    • 基于離屏 FrameBuffer 支持 MSAA 抗鋸齒(開啟項目宏 Enable Antialias 生效):注意,如果之前開啟了該項目宏,那么升級為 3.3 之后原生平臺性能損耗會有所增加,這是正常情況
    • 內置 Frame Graph 渲染定制層,后續版本將接入渲染管線,開放定制接口給用戶
    • 在 Vulkan & Metal 后端支持 Subpass
    • 添加 M1 CPU 的蘋果設備上使用 iOS Simulator 調試的能力,需要參考文檔使用
    • binding generator 全面兼容 python 2.7 / 3.x (64 位)

    Breaking changes

    • 構建壓縮紋理不再帶有默認 png 圖,如果使用到這個特性的項目,請在項目配置內為已有的壓縮紋理配置添加默認圖(來自論壇反饋
    • 目前已支持 HDR 貼圖直接導入,之前如果使用 RGBE 格式的 .png 請替換為原始 .hdr 貼圖
    • 我們修復了一處 FBX 資源導入問題:若 FBX 模型含有多段動畫,第二段及后續的動畫都錯誤地包含了前段的所有動畫數據。注意:如果已經配置了動畫分割,則可能需要調整。不過我們并未收到外部開發者關于此問題的反饋。

    Known Issues

    • 原生平臺 Bullet 后端射線檢測性能有所下降,我們將在下個小版本修復此問題,可暫時切換到 PhysX 后端進行使用或減少每幀射線數量
    • 3D 粒子 startSpeed, startRotation, gravityModifier 屬性在 Curve 模式下可能出現顯示異常,將在下個小版本修復此問題

    級說明

    從 < 3.1.0 版本升級

    • 從 v3.1 開始,UITransform 組件的 priority 屬性已棄用,若需要調整節點樹的順序請使用 setSiblingIndex 方法。在 v3.1 之前通過代碼創建并依賴 priority 屬性的節點可能會出現節點樹表現和之前不一致的問題,請手動調整。
    • RenderTexture 在不同平臺上會出現正反不一致的情況,為了解決這個問題,Creator 為 effect 新增了 SAMPLE_FROM_RT 宏,在使用 RenderTexture 時,需要將 SAMPLE_FROM_RT 宏設置為 true,各后端便會統一適配至正確的效果。
    • 在 v3.1 中材質 Shader API 與 v3.0 有一定的差異,請參考 v3.0 材質升級指南v3.1 材質升級指南 進行手動升級。

    從 < 2.4.5 版本升級

    Cocos Creator 3.x 版本已經正式發布,2.4 版本將做為 LTS(長期支持)版本,提供后續兩年的持續更新!在 2021 年,2.4 將繼續更新版本,提供缺陷修復和新的小游戲平臺支持,保障大家的項目成功上線;在 2022 年我們還將為開發者持續提供 2.4 的關鍵問題修復,保障已上線的游戲平穩運營!因此,

    • 現有的 2.x 項目可以安心繼續開發,無需強制升級 3.0。
    • 現有的 2.x 項目因項目需求如想升級到 3.x,可以使用 Creator 提供的 2.x 資源導入工具。此工具將支持舊項目資源完美導入,以及代碼的輔助導入。代碼輔助導入會把 js 轉換成 ts,添加組件類型聲明、屬性聲明及函數聲明,組件在場景中的引用都會得到保留,并且函數內部的代碼會以注釋的形式導入進來,可以減輕開發者的升級難度。詳細的升級說明請參考 升級指南。
    • 新項目則建議使用 3.0 版本開發,我們會不斷優化 3.0 的開發體驗和運行效率,支撐好 2D、3D 等不同品類的重度游戲順利上線。

    Cocos Creator 對項目的升級操作是不可逆的,請在升級前提交或備份舊版項目。絕大多數項目通常都能自動升級,但因為項目難免存在特殊性,開發者應該根據項目自身需求,提前對新版本引擎進行試用和評估。此外,出于穩定性考慮,建議即將上線或已上線的項目謹慎升級。如果開發者們在升級中遇到困難,歡迎向我們反饋,我們會盡力協助。

    2021.08.10

    V3.2.1

    發布時間: 2021.08.10

    Cocos Creator v3.2.1 是我們將 v3.1.2 合并到 v3.2.1 而來,繼續在大版本分支上給大家帶來更穩定的體驗,v3.2 用戶和 v3.1.x 用戶都可以無痛升級。

    Improvement

    • Web & 小游戲 2D 渲染性能優化
    • 優化小游戲啟動性能
    • 優化動畫組件運行時性能
    • 優化 PCF 陰影虛化效果,對低精度 ShadowMap 更加友好
    • 優化 bullet 物理引擎性能
    • 增加自動資源掃描開關,大型項目可以手動刷新資源管理器,提升編輯器體驗
    • 創建項目時默認不開啟 TS 嚴格模式(建議手動開啟)
    • 解決 Mask 帶來的內存泄露
    • 解決 MeshRenderer 設置材質導致的內存泄露
    • 強化 FBX 模型導入的容錯
    • 兼容廢棄的 AudioClip 播放接口

    Bug Fixes

    • 修復部分 iPhone 設備的字節平臺上,Shadow map 陰影渲染不出來的問題
    • 修復 Empty 模板創建項目的問題
    • 修復材質編輯器中多 PASS 切換問題和部分屬性顯示丟失
    • 修復 JointTextureLayout 面板無法滾動
    • 修復 SplashScreen 設置窗口無法關閉問題
    • 修復預制體根節點上的腳本在原生環境中丟失的問題
    • 修復重復加載 Morph 模型導致的渲染錯誤
    • 修復 TTF 字體丟失時的崩潰
    • 動畫編輯器修復
      • 修復動畫編輯器節點關鍵幀無法直接刪除
      • 修復動畫編輯器框選后,按下 Ctrl 添加關鍵幀后復制粘貼、縮放、排列關鍵幀功能異常
      • 修復動畫編輯器屬性列表超出不出現滾動條、sample 修改后,當前時間顯示未實時更新
    • 環境與光影
      • 修復開啟 IBL 之后的材質報錯
      • 修復天空盒第一次設置無法顯示
      • 修復開啟 ShadowMap 陰影后 GPU 預烘焙骨骼動畫失效
    • 粒子模塊修復
      • 修復粒子材質在節點未啟用的情況下無法顯示的問題
      • 修復粒子 start speed 效果問題和旋轉時的重力效果問題
    • 構建模塊修復
    • Tiledmap 修復
      • 修復使用多圖集下的 Tilesets 顯示錯誤
      • 修復 TiledLayer getTiledTileAt 函數報錯問題
    • 2D 骨骼動畫
      • 修復編輯器更新 color,Spine 和 DB 透明度不生效問題
      • 修復 web 和 native 上 Spine 使用 blend mode 顯示效果不正確的問題
      • 修復 Spine 掛點節點在編輯器設置 scale 后不生效的問題
    2021.07.21

    V2.4.6

    發布時間: 2021.07.21

    本次更新修復了一些已知問題,Cocos Creator 將持續優化性能,為開發者帶來更好的使用體驗!以下是詳細更新內容。

    重要更新

    • 優化編輯器資源加載速度,當資源第一次導入后,后續再次打開編輯器,所需時間僅為之前版本的 50% 以下,極大優化啟動速度,提升開發效率
    • 優化編輯器構建時的卡頓問題,我們將引擎編譯的過程移動到了 worker 中,不會阻塞主進程的執行,開發者可以在構建時,繼續開發工作
    • 優化 iOS 平臺序列幀動畫性能,在 iPhone 6s Plus 舊機型上最多能提升三倍性能[#8528]
    • 添加場景列表到預覽工具欄上,可快速選擇預覽場景,而無需切換到對應場景,提升工作效率

    Editor

    • 修復每次構建后 Zip 文件的 Hash 值不一致的問題
    • 修復拖動帶有子類的節點到父類屬性上無效的問題
    • 修復點擊屬性面板上屬性選項無法定位到層級面板上的節點的問題
    • 修復燈光節點在移動時,出現 Gizmos 小方塊偏移出節點外的問題
    • 修復資源管理器重命名回車以后沒有進入到選中狀態的問題
    • 修復 3D 粒子 Texture Animation 模塊修改 numTilesX 和 numTilesY 沒有立即生效的問題。
    • 修復 3D 粒子 Rotation 模塊無法設置 separateAxes, 修改 XY 旋轉無效的問題。
    • 修復 3D 粒子 Size 模塊使用曲線時修改沒有立即生效的問題。
    • 新增 VideoClip 類型,視頻資源導入后自動識別為 VideoClip 格式
    • 修復壓縮紋理出現噪點的問題,感謝 大城小胖
    • 修復內置 Unlit 材質 depthWrite 值不對的問題
    • 修復富文本組件導致打開場景數據發生變化的問題[#8903]

    Engine

    • 修復材質的 hash 值因為 uniform 的順序導致計算不正確的問題[#8823]
    • 修復 sp.Skeleton.clearTrack 沒有重置初始姿勢的問題[#8801]
    • 修復 cc.Color.fromHex 計算錯誤的問題[#8762]
    • 新增 Node.setSelfGroupIndex 接口用于設置自身分組[#8614],感謝大城小胖
    • 修復 Mark 組件使用精靈后勾選延遲加載后錯誤的問題[#8264]
    • 修復事件回調中觸發其他事件導致事件丟失的問題[#8276]
    • 修復多次打開軟鍵盤無法將游戲內容上推的問題[#8374]
    • 修復觸摸節點,緊接著隱藏節點,釋放觸點后導致觸摸事件全部失效的問題[#8969]
    • 新增 Animation.hasAnimationState API 判斷是否存在某個 AnimationState,感謝大城小胖

    Mini Game

    • 修復 cc.assetManager.cacheManager.clearLRU 調用報錯的問題[#234]

    Breaking Change

    • cc.sys.isNative 在快游戲平臺改為 false

    升級提示

    Cocos Creator 3.0 版本已經正式發布, 2.4 版本將做為 LTS(長期支持)版本,提供后續兩年的持續更新!在 2021 年,2.4 將繼續更新版本,提供缺陷修復和新的小游戲平臺支持,保障大家的項目成功上線;在 2022 年我們還將為開發者持續提供 2.4 的關鍵問題修復,保障已上線的游戲平穩運營!因此,

    • 現有的 2.x 項目可以安心繼續開發,無需強制升級 3.0。
    • 現有的 2.x 項目因項目需求如想升級到 3.x,可以使用 Creator 提供的 2.x 資源導入工具。此工具將支持舊項目資源完美導入,以及代碼的輔助導入。代碼輔助導入會把 js 轉換成 ts,添加組件類型聲明、屬性聲明及函數聲明,組件在場景中的引用都會得到保留,并且函數內部的代碼會以注釋的形式導入進來,可以減輕開發者的升級難度。詳細的升級說明請參考 升級指南。
    • 新項目則建議使用 3.0 版本開發,我們會不斷優化 3.0 的開發體驗和運行效率,支撐好 2D、3D 等不同品類的重度游戲順利上線。

    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 升級文檔》進行調整。

    2021.07.15

    V3.1.2

    發布時間: 2021.07.15

    v3.1.2 是在 v3.1.1 上優化體驗和性能的版本,這個版本的更新內容是不包含在 v3.2 中的,之后會將 v3.1.2 的更新合并到 v3.2.1 和 v3.3.0。

    從 3.1.0 之后引擎組其實一直在并行推進三個版本線,v3.2.0, v3.1.x, v3.3.0,其中 v3.2 由于有配合鴻蒙 2.0 發布的需求,所以發布日早就定下了,為了穩定性其實主要就是在 v3.1.1 基礎之上增加了鴻蒙平臺支持。而在這之后,我們也在持續收到開發者關于 3.1 的問題反饋,為了更切實解決開發者遇到的痛點問題,并且降低開發者的升級門檻,我們決定繼續在 v3.1.2 上優化體驗和性能,交付給開發者。目前 Cocos Creator v3.x 作為一個新生的 3D 引擎,距離開發者的期待還有不小的距離,我們希望通過這種持續交付的實際行動來給開發者更強的信心。同時感謝所有 v3.x 先行者的支持,是你們的反饋讓引擎日趨完善!

    Improvement

    • Web & 小游戲 2D 渲染性能優化
    • 優化小游戲啟動性能
    • 優化動畫組件運行時性能
    • 優化 PCF 陰影虛化效果,對低精度 ShadowMap 更加友好
    • 優化 bullet 物理引擎性能
    • 增加自動資源掃描開關,大型項目可以手動刷新資源管理器,提升編輯器體驗
    • 創建項目時默認不開啟 TS 嚴格模式(建議手動開啟)
    • 解決 Mask 帶來的內存泄露
    • 解決 MeshRenderer 設置材質導致的內存泄露
    • 強化 FBX 模型導入的容錯
    • 兼容廢棄的 AudioClip 播放接口

    Bug Fixes

    • 修復 Empty 模板創建項目的問題
    • 修復材質編輯器中多 PASS 切換問題和部分屬性顯示丟失
    • 修復 JointTextureLayout 面板無法滾動
    • 修復 SplashScreen 設置窗口無法關閉問題
    • 修復預制體根節點上的腳本在原生環境中丟失的問題
    • 修復重復加載 Morph 模型導致的渲染錯誤
    • 修復 TTF 字體丟失時的崩潰
    • 動畫編輯器修復
      1. 修復動畫編輯器節點關鍵幀無法直接刪除
      2. 修復動畫編輯器框選后,按下 Ctrl 添加關鍵幀后復制粘貼、縮放、排列關鍵幀功能異常
      3. 修復動畫編輯器屬性列表超出不出現滾動條、sample 修改后,當前時間顯示未實時更新
    • 環境與光影
      1. 修復開啟 IBL 之后的材質報錯
      2. 修復天空盒第一次設置無法顯示
      3. 修復開啟 ShadowMap 陰影后 GPU 預烘焙骨骼動畫失效
    • 粒子模塊修復
      1. 修復粒子材質在節點未啟用的情況下無法顯示的問題
      2. 修復粒子 start speed 效果問題和旋轉時的重力效果問題
    • 構建模塊修復
      1. 修復構建插件重啟后報錯 (來自論壇反饋:?構建擴展包刷新報錯?2)
      2. 修復自動圖集配置修改后構建仍使用緩存 (來自論壇反饋:CC3.1.1自動圖集,打包后會保留原圖)
      3. 修復安卓 abi 無默認值與原生 native 文件夾的 git ignore 配置問題 (來自論壇反饋:原生native目錄需要進行git版本控制嗎?2)
    • Tiledmap 修復
      1. 修復使用多圖集下的 Tilesets 顯示錯誤
      2. 修復 TiledLayer getTiledTileAt 函數報錯問題
    • 2D 骨骼動畫
      1. 修復編輯器更新 color,Spine 和 DB 透明度不生效問題
      2. 修復 web 和 native 上 Spine 使用 blend mode 顯示效果不正確的問題
      3. 修復 Spine 掛點節點在編輯器設置 scale 后不生效的問題

    以上就是 v3.1.2 的重要更新,優化了大量開發者反饋的問題,有些問題由于反饋眾多,就不單獨列出論壇鏈接了,如果有修復各位遇到的問題,歡迎大家去關聯到本帖并標記已解決。

    另外,v3.3.0 版本已進入迭代后期,這個版本有一些非常重要的更新可以提前透露給大家:

    1. 進一步提高原生化比重,在原生層實現渲染場景,優化性能,為未來的上層原生化和場景管理打好基礎
    2. 渲染管線優化,降低 IO 壓力
    3. 優化大項目使用體驗:降低編輯器內存使用,避免崩潰,優化卡頓
    4. 優化標準光照模型
    5. 動畫數據重構升級:為動畫系統升級和動畫狀態機做好準備
    6. 各個后端物理行為統一
    7. 延遲渲染管線優化:光源裁剪、SSPR 等

    除此之外還有各種 Demo 也在制作當中,比如已經上架 Store 的跑酷 Demo 56
    API 文檔頁面也在進行重新設計,我們都非常重視,會盡力一步步完善 Cocos Creator v3.x 的 2D & 3D 開發體驗!

    2021.06.18

    V3.2.0

    發布時間: 2021.06.18

    Cocos Creator 3.2 正式支持 HarmonyOS,成為全球首家支持 HarmonyOS 的游戲引擎。與此同時,Creator 與字節跳動平臺進行了深度合作,以實驗性功能支持在字節小游戲中使用平臺提供的 PhysX 物理能力!歡迎所有開發者使用與體驗!以下是詳細更新內容。

    What's new

    支持構建 HarmonyOS 應用

    在 3.2 版本,Creator 將支持一鍵將游戲打包為 HarmonyOS 應用,在配置 HarmonyOS SDK 與 NDK 路徑后,可在構建面板選擇 HarmonyOS 一鍵打包,詳細操作請參考文檔 發布 HarmonyOS 應用 。

    字節跳動小游戲支持使用平臺提供的 PhysX 能力

    字節跳動平臺一直致力于為開發者提供最強大的性能和基礎能力,抖音將在 16.3 之后版本為小游戲提供 PhysX 原生物理接口,而 Creator 與字節跳動平臺進行了深度合作,在 3.2 中以實驗性功能支持在字節小游戲中使用平臺提供的 PhysX 物理能力,優化物理運算性能,對比 Bullet 有近 100% 的性能提升。

    可以在構建面板選擇是否開啟多線程:

    升級說明

    從 < 3.1.0 版本升級

    •  從 v3.1 開始,UITransform 組件的 priority 屬性已棄用,若需要調整節點樹的順序請使用 setSiblingIndex 方法。在 v3.1 之前通過代碼創建并依賴 priority 屬性的節點可能會出現節點樹表現和之前不一致的問題,請手動調整。
    • RenderTexture 在不同平臺上會出現正反不一致的情況,為了解決這個問題,Creator 為 effect 新增了 SAMPLE_FROM_RT 宏,在使用 RenderTexture 時,需要將 SAMPLE_FROM_RT 宏設置為 true,各后端便會統一適配至正確的效果。

    從 < 2.4.5 版本升級

    Cocos Creator 3.x 版本已經正式發布,2.4 版本將做為 LTS(長期支持)版本,提供后續兩年的持續更新!在 2021 年,2.4 將繼續更新版本,提供缺陷修復和新的小游戲平臺支持,保障大家的項目成功上線;在 2022 年我們還將為開發者持續提供 2.4 的關鍵問題修復,保障已上線的游戲平穩運營!因此,

    • 現有的 2.x 項目可以安心繼續開發,無需強制升級 3.0。
    • 現有的 2.x 項目因項目需求如想升級到 3.x,可以使用 Creator 提供的 2.x 資源導入工具。此工具將支持舊項目資源完美導入,以及代碼的輔助導入。代碼輔助導入會把 js 轉換成 ts,添加組件類型聲明、屬性聲明及函數聲明,組件在場景中的引用都會得到保留,并且函數內部的代碼會以注釋的形式導入進來,可以減輕開發者的升級難度。詳細的升級說明請參考 升級指南。
    • 新項目則建議使用 3.0 版本開發,我們會不斷優化 3.0 的開發體驗和運行效率,支撐好 2D、3D 等不同品類的重度游戲順利上線。

    Cocos Creator 對項目的升級操作是不可逆的,請在升級前提交或備份舊版項目。絕大多數項目通常都能自動升級,但因為項目難免存在特殊性,開發者應該根據項目自身需求,提前對新版本引擎進行試用和評估。此外,出于穩定性考慮,建議即將上線或已上線的項目謹慎升級。如果開發者們在升級中遇到困難,歡迎向我們反饋,我們會盡力協助。

    2021.06.01

    V3.1.1

    發布時間: 2021.06.01

    Cocos Creator 3.1.1 主要修復了 v3.1 出現的穩定性問題,并優化了編輯器工作流。歡迎所有開發者使用與體驗!升級前請做好相關文件備份哦!以下是詳細更新內容。

    Improvement

    • 新增在資源管理器面板創建 Prefab 資源的功能
    • 新增層級管理器面板可批量設置(Alt + 點擊)鎖定節點的功能(鎖定后在場景編輯器面板中無法被選中)
    • 當屬性檢查器中的屬性為非 null 類型,但為 null 值時,新增創建功能

    Bug Fixes

    • [EDITOR]修復構建安卓平臺時可能報錯的問題
    • [EDITOR]修復使用默認值進行命令行構建時無法成功的問題
    • [EDITOR]修復命令行構建時一些布爾型參數轉換錯誤的問題
    • [EDITOR]修復構建安卓平臺時 Target Api Level 修改無效的問題
    • [EDITOR]修復壓縮紋理同時選擇 ETC1 RGB Separate A 格式與 PNG 格式時,PNG 格式圖片生成錯誤的問題
    • [EDITOR]修復添加骨骼動畫事件后無法全部刪除的問題
    • [EDITOR]修復動畫編輯器分量軌道的選中問題
    • [EDITOR]修復在 Prefab 中引用嵌套 Prefab 中的節點或組件保存后會丟失的問題。
    • [EDITOR]修復在 Prefab 實例中新添加的組件中引用 Prefab 里的節點或組件保存后會丟失的問題。
    • [EDITOR]修復屬性檢查器界面記錄折疊狀態失效的問題
    • [EDITOR]修復在屬性檢查器面板編輯節點 Layer 屬性后沒有彈出是否一起修改子節點的問題
    • [EDITOR]修復屬性檢查器面板中數組不識別拖入資源的問題
    • [EDITOR]修改將 SpriteFrame 資源拖到層級管理器面板創建節點時,節點的 Layer 屬性不為 UI_2D 的問題
    • [EDITOR]修復資源預覽面板中對末級資源無選中記錄的問題
    • [EDITOR]修復資源管理器面板在折疊起來的文件夾內不能準確滾動定位到內部資源的問題
    • [EDITOR]修復 Joint Texture Layout 面板無法滾動的問題
    • [ENGINE]修復 SafeArea 組件效果不正確的問題 #8654
    • [ENGINE]修復小米快游戲平臺音頻調用 pause 之后,調用 stop 時間刻度沒有重置為 0 的問題 #8636
    • [ENGINE]修復華為快游戲平臺音頻獲取 currentTime 為 string 類型的問題 #8656
    • [ENGINE]修復連尚小游戲平臺的觸摸事件回調會導致在低端機上卡頓的問題 #8661
    • [ENGINE]修復在 iPad 瀏覽器上觸摸事件不可用的問題 #8673
    • [ENGINE]修復 QQ 瀏覽器、微信小游戲 iOS 端、百度小游戲的重力感應無法開啟或不正確的問題 #8632
    • [ENGINE]修復 CacheManager.clearLRU 調用報錯的問題 #8663
    • [ENGINE]修復 SubContextView 節點因為節點 Layer 修改而不能被渲染的問題 #8677

    Known Issues

    • 微信 PC 端的鍵盤和鼠標適配有問題,我們將在下個版本修復這個問題,也可以手動合并此 PR 修復:#8626
    • 在 Sprite 設置完 RenderTexture 后需要手動調用下 Sprite.updateMaterial 函數,否則可能導致在某些平臺出現圖像翻轉的問題
    • 在場景天空盒選項上勾選 UseIBL 可能會導致 cc_environment 綁定丟失,將在下個版本修復此問題

    升級說明

    從 < 3.1.0 版本升級

    •  從 v3.1 開始,UITransform 組件的 priority 屬性已棄用,若需要調整節點樹的順序請使用 setSiblingIndex 方法。在 v3.1 之前通過代碼創建并依賴 priority 屬性的節點可能會出現節點樹表現和之前不一致的問題,請手動調整。
    • RenderTexture 在不同平臺上會出現正反不一致的情況,為了解決這個問題,Creator 為 effect 新增了 SAMPLE_FROM_RT 宏,在使用 RenderTexture 時,需要將 SAMPLE_FROM_RT 宏設置為 true,各后端便會統一適配至正確的效果。

    從 < 2.4.5 版本升級

    Cocos Creator 3.x 版本已經正式發布,2.4 版本將做為 LTS(長期支持)版本,提供后續兩年的持續更新!在 2021 年,v2.4 將繼續更新版本,提供缺陷修復和新的小游戲平臺支持,保障大家的項目成功上線;在 2022 年我們還將為開發者持續提供 v2.4 的關鍵問題修復,保障已上線的游戲平穩運營!因此,

    • 現有的 v2.x 項目可以安心繼續開發,無需強制升級 v3.0。
    • 現有的 v2.x 項目因項目需求想升級到 v3.x,可以使用 Creator 提供的 2.x 資源導入工具。此工具將支持舊項目資源完美導入,以及代碼的輔助導入。代碼輔助導入會把 JavaScript 轉換成 TypeScript,并自動添加組件類型聲明、屬性聲明及函數聲明,組件在場景中的引用都會得到保留,并且函數內部的代碼會以注釋的形式導入進來,可以減輕開發者的升級難度。詳細的升級說明請參考 升級指南。
    • 新項目則建議使用 v3.0 開發,我們會不斷優化 v3.0 的開發體驗和運行效率,支撐好 2D、3D 等不同品類的重度游戲順利上線。

    Cocos Creator 對項目的升級操作是不可逆的,請在升級前提交或備份舊版本項目。絕大多數項目通常都能自動升級,但因為項目難免存在特殊性,開發者應該根據項目自身需求,提前對新版本引擎進行試用和評估。此外,出于穩定性考慮,建議即將上線或已上線的項目謹慎升級。如果開發者們在升級中遇到困難,歡迎向我們反饋,我們會盡力協助。

    2021.05.12

    V3.1.0

    發布時間: 2021.05.12

    3.0 版本的推出標志著 Creator 邁向了一個全新的征程,而 Creator 3.1 就是征途上的第一塊基石,此次版本更新帶來了很多非常棒的新特性,包含華為海思團隊貢獻的延遲渲染管線,PhysX 物理后端的支持等等;同時,相對 3.0 版本,各方面的性能也得到了優化,例如幀動畫性能,加載性能,包體等等。我們將會在 3.x 的基礎上繼續深耕,用真誠的態度和敬業的精神,踏踏實實完善產品體驗,普惠所有開發者。歡迎所有開發者使用與體驗!升級前請做好相關文件備份哦!

    What's new

    • 新增延遲渲染管線(感謝華為海思團隊的貢獻),可在項目設置中選擇延遲渲染管線
    • 引入多線程渲染架構。在原生平臺上,傳統的單線程架構已無法滿足大規模場景的渲染,因此,Creator 在 v3.1 中將傳統的單線程架構初步拆分為了渲染線程和設備線程兩個主線程。除了主線程的拆分外,Creator 還將 command buffers 的提交過程并行化,加快渲染效率。多線程渲染架構圖如下:
    • 增加 PhysX 物理支持,目前支持除了安卓 x86 之外的原生平臺,在 iOS 上有 100% 以上的性能提升(若需要在 web 平臺上預覽可以參考 example-3d 里面的 physics-3d 工程,主要修改內容在 preview-template 文件夾中)
    • 編輯器支持骨骼八面體展示,可以直觀看到模型骨骼的分布狀態
    • 支持在 FBX/glTF 資源的 Inspector 上預覽動畫
    • 開放新版曲線編輯器,支持分別編輯左右斜率,支持直接顯示曲線的循環模式
    • 安卓平臺支持構建 x86_64 架構
    • 支持在 Prefab 實例上添加/刪除組件
    • Mac 構建新增 支持 M1 選項,用于更好地對一些已知的引擎模塊在 Apple M1(Silicon)架構的設備上的支持問題做提示
    • 添加場景即時緩存的實驗室功能,默認開啟,可在場景異常退出后恢復數據
    • 編輯器添加 ui-curve、ui-curve-editor 組件,插件開發者可在插件中直接使用

    Improvement

    • 提升引擎原生平臺運行性能
    • 提升引擎幀動畫運行性能
    • 提升運行時資源加載速度(構建模式)
    • 優化動畫編輯器在編輯大數量關鍵幀時的卡頓問題
    • 自動圖集面板新增針對 Bundle 內使用自動圖集的優化選項,共增加三個選項,用于自動圖集在 Bundle 內時的一些不必須信息剔除,優化包體
    • 優化自動圖集被多個 Bundle 引用導致圖片被復制的問題,減少包體
    • Shadow Map 支持了線性深度,深度圖壓縮(與線性深度功能互斥),自陰影效果,以及 normal bias 參數設置
    • Lighting Map 支持 RGBE 格式

    Editor

    • 優化動畫編輯器的事件編輯面板,避免產生空函數數據
    • 構建的輸出地址修改為支持協議頭的路徑
    • 構建導出配置支持跨版本導入使用
    • 構建面板添加校驗機制,數據填寫錯誤時將無法構建
    • 優化部分小游戲平臺打包 rpk 的輸出日志
    • 優化構建輸出 log 信息,修復日志丟失問題
    • 優化資源丟失處理,可以在資源恢復后自動還原
    • 新建 Button 默認對 Label 節點上鎖,方便在場景中選中
    • 修復從 Prefab 退出可能引起的場景數據問題
    • FBX 導入時可選擇動畫烘焙速率
    • 解決部分 FBX 導入會導致編輯器卡死的問題
    • FBX/glTF 增加導入選項“提升單一根結點”
    • 修復了 TiledMap 導入 .tmx 資源時丟失問題

    Engine

    • 修復了 TiledMap 動畫失效問題
    • 修復了 Spine 在原生下預乘不生效的問題
    • 修復了 Spine 開啟預乘下設置透明度顯示異常問題
    • 修復了部分機型 Vulkan 驅動不兼容問題
    • 修復 Metal 相關平臺 Shadow Map 顯示錯亂問題。

    Breaking Changes

    • 移除了 AudioClip 的播放接口,并且不支持 started 事件監聽,AudioClip 現在是純音頻資源類型
    • effect 資源中不能再直接調用 CCStandardShading 函數,統一封裝進 CC_STANDARD_SURFACE_ENTRY 宏定義,建議只在 surface 函數中做自定義邏輯
    • GFX 模塊改名,去掉 GFX 前綴,統一使用 import { gfx } from 'cc';
    • 構建面板上移除了自動圖集、壓縮紋理開關,項目在配置了自動圖集與壓縮紋理后將會直接處理
    • 棄用 cc-fog 頭文件,改用 cc-fog-vs 和 cc-fog-fs
    • 移除了 sys 下的部分常量 sys.LINUX,sys.BLACKBERRY,sys.EMSCRIPTEN,sys.TIZEN,sys.WINRT,sys.WP8,sys.QQ_PLAY,sys.FB_PLAYABLE_ADS

    Known Issues

    • 微信 PC 端的鍵盤和鼠標適配有問題,我們將在 v3.1.1 里修復這個問題,你可以手動合并此 PR 修復 #8626
    • SafeArea 組件暫時無法正常使用,我們將在 v3.1.1 里修復這個問題,你可以通過手動合并此 PR 來解決此問題 #8652
    • 在 Sprite 設置完 RenderTexture 后需要手動調用下 Sprite.updateMaterial 函數,否則在某些平臺下可能出來圖像翻轉

    升級說明

    從 < 3.1.0 版本升級

    •  UITransform 組件的 priority 屬性從 3.1 開始不建議使用, 設置 priority 屬性來排布節點順序的方法棄用,請使用 setSiblingIndex 方法改變節點樹順序。通過代碼創建添加并依賴此屬性的節點可能會遇到節點樹表現和之前不一致的問題,請手動調整。
    • RenderTexture 在不同平臺上會出現正反不一致的效果,Creator 為 effect 新增了 SAMPLE_FROM_RT 宏,當需要使用 RenderTexture 時,需要設置 SAMPLE_FROM_RT 宏為true,此時各后端會統一適配至正確的效果。

    從 < 2.4.5 版本升級

    Cocos Creator 3.x 版本已經正式發布,2.4 版本將做為 LTS(長期支持)版本,提供后續兩年的持續更新!在 2021 年,2.4 將繼續更新版本,提供缺陷修復和新的小游戲平臺支持,保障大家的項目成功上線;在 2022 年我們還將為開發者持續提供 2.4 的關鍵問題修復,保障已上線的游戲平穩運營!因此,

    • 現有的 2.x 項目可以安心繼續開發,無需強制升級 3.0。
    • 現有的 2.x 項目因項目需求如想升級到 3.x,可以使用 Creator 提供的 2.x 資源導入工具。此工具將支持舊項目資源完美導入,以及代碼的輔助導入。代碼輔助導入會把 js 轉換成 ts,添加組件類型聲明、屬性聲明及函數聲明,組件在場景中的引用都會得到保留,并且函數內部的代碼會以注釋的形式導入進來,可以減輕開發者的升級難度。詳細的升級說明請參考 升級指南。
    • 新項目則建議使用 3.0 版本開發,我們會不斷優化 3.0 的開發體驗和運行效率,支撐好 2D、3D 等不同品類的重度游戲順利上線。

    Cocos Creator 對項目的升級操作是不可逆的,請在升級前提交或備份舊版項目。絕大多數項目通常都能自動升級,但因為項目難免存在特殊性,開發者應該根據項目自身需求,提前對新版本引擎進行試用和評估。此外,出于穩定性考慮,建議即將上線或已上線的項目謹慎升級。如果開發者們在升級中遇到困難,歡迎向我們反饋,我們會盡力協助。

    2021.04.19

    V2.4.5

    發布時間: 2021.04.19

    What’s New

    • 支持 Apple Silicon (M1) 芯片的運行環境

    Bug Fixes

    • 修復 effect 資源有語法錯誤時,導致內置 effect 加載失敗的問題
    • 修復動畫編輯器第一次進入,刻度條沒有歸 0 的問題 
    • 修復編輯動畫之后,組件上的動畫順序變化的問題[#8295]
    • 修復在 onDestroy 中移除常駐節點,報錯的問題[#8314]
    • 修復火狐瀏覽器 Scroll View 滾動速度與 Chrome 上不一致的問題[#8306]
    • 修復 iPad 上橫屏玩豎屏游戲,SafeArea 錯誤的問題,感謝 大城小胖 [#224]

    升級提示

    Cocos Creator 3.0 版本已經正式發布, 2.4 版本將做為 LTS(長期支持)版本,提供后續兩年的持續更新!在 2021 年,2.4 將繼續更新版本,提供缺陷修復和新的小游戲平臺支持,保障大家的項目成功上線;在 2022 年我們還將為開發者持續提供 2.4 的關鍵問題修復,保障已上線的游戲平穩運營!因此,

    • 現有的 2.x 項目可以安心繼續開發,無需強制升級 3.0。
    • 新項目則建議使用 3.0 版本開發,我們會不斷優化 3.0 的開發體驗和運行效率,支撐好 2D、3D 等不同品類的重度游戲順利上線。

    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 升級文檔》進行調整。

    2021.04.14

    V3.0.1

    發布時間: 2021.04.14

    Creator 3.0 版本作為引擎組的新基線版本,統一了 2D 與 3D 的開發工作流,兼顧了輕量與重度游戲的開發體驗,融合了幾乎所有 Creator 2.x 與 Creator 3D 1.x 版本的功能。一經推出就受到了大家的踴躍嘗試與使用,并收到了許多積極反饋。而此版本主要面向 3.0 版本以來的問題修復與使用體驗優化。我們將會在 3.x 的基礎上繼續深耕,用真誠的態度和敬業的精神,踏踏實實完善產品體驗,普惠所有開發者。歡迎所有開發者使用與體驗!升級前請做好相關文件備份哦!

    What's New

    • 移除選項“模擬全局變量”,新增選項“執行作用域”

    可選值為 Global 或 Enclosed。當為 Global 時,直接在目標環境中執行該腳本。當為 Enclosed 時,將整個腳本包裹在 IIFE 函數中執行,這意味著腳本頂部以 var 聲明的變量不會提升為全局變量。

    • 增加將場景相機對齊到某個節點上的功能
    • 增加 2D/3D 模式切換快捷鍵(數字鍵2)

    Improvement

    • 當項目中試圖引用 Node 模塊時給予更明確的提示
    • 構建時消除包體中項目腳本冗余代碼
    • 優化微信引擎分離功能與模塊剔除,減小包體
    • 支持了 BMFont 使用透明通道分離格式的壓縮紋理 #8364

    Editor

    • 修復命令行構建將會新增構建任務的問題
    • 修復特定情況下快捷鍵面板的快捷鍵可能無法被修改成功的問題
    • 修復右鍵刪除多個選中動畫事件有延遲的問題
    • 修復骨骼動畫在動畫編輯器內不能正常的點擊屬性軌道以及移動小紅線查看等等問題
    • 修復創建構建插件后需要手動刷新插件管理器才能顯示的問題
    • 修復 Mac 上插件管理器導入插件失敗的問題
    • 修復插件商城關閉時彈出警告的問題
    • 修復引擎主光源與烘培效果存在差異問題
    • 修復烘培非 n*n 地形錯誤的問題
    • 修復編輯粒子節點的界面存在的緩存問題
    • 修復圖片為 textrue 類型時不顯示子資源編輯界面的問題
    • 修復快捷鍵配置面板無法滾動的問題
    • 修復切換場景后地形節點的地形刷沒有重置的問題
    • 修復 M1 設備上無法構建 iOS 工程的問題
    • 修復 glTF 資源導入的時候,可能丟失子資源的問題
    • 修復創建的構建插件模版文件無法修改問題
    • 修復預覽的時候,scene.name 丟失的問題

    Engine

    • [SPINE] 修復 SkeletonTexture 類型沒有導出的問題 #8359
    • [UI] 修復 iOS 14 上靜態合批組件渲染不正確的問題 #8320
    • [UI] 修復 RichText 組件的換行不正確的問題 #8345
    • [UI] 修復了 Mask 點擊穿透的問題 #8313
    • [UI] 修復了 Widget 的 always 模式的問題 #8304
    • [UI] 修復了 Mask 內存泄漏的問題 #8375
    • [SHADOW] 修復了平面陰影在 instancing 下,設置額外的紋理報錯的問題 #8336
    • [SHADOW] 修復了 Nvidia 顯卡下,透明模型開啟 shadow map 后渲染錯誤的問題 #8303
    • [SHADOW] 修復了平面陰影在多光源下,不顯示的問題 #8328
    • [TWEEN] 修復 Tween 不支持自定義緩動函數的問題 #8321
    • [PHYSICS] 修復未啟用時剛體的初始化類型不正確的問題 #8307
    • [PHYSICS] 修復 Ammo 運行時設置網格不生效的問題 #8315
    • [ASSET] 修復了在 WebGL2 環境下 ETC1 格式壓縮紋理的渲染問題 #8351

    Native

    • 修復原生 Spine/Dragonbones 節點 active 更改后無法顯示的問題 #8323
    • 修復 Win32 / macOS 平臺 EditBox 回車無法結束編輯的問題 #3295?

    Breaking Change

    • 緩動系統更新時機從 lateUpdate 階段之后更改為 update 階段之后,可能需要調整處理時機 #8305
    • 為了適配 M1,重新編譯了第三方庫,要求 Xcode 版本為 11.5+

    Known Issue

    • 在導入含有負幀動畫的 FBX 時可能造成編輯器不工作,請在相應 DCC 工具中確定沒有負幀動畫出現,之后版本將修復此問題
    • 原生平臺 Spine 預乘渲染不正確,之后版本將修復此問題

    升級提示

    Cocos Creator 3.x 版本已經正式發布, 2.4 版本將做為 LTS(長期支持)版本,提供后續兩年的持續更新!在 2021 年,2.4 將繼續更新版本,提供缺陷修復和新的小游戲平臺支持,保障大家的項目成功上線;在 2022 年我們還將為開發者持續提供 2.4 的關鍵問題修復,保障已上線的游戲平穩運營!因此,

    • 現有的 2.x 項目可以安心繼續開發,無需強制升級 3.0。
    • 新項目則建議使用 3.0 版本開發,我們會不斷優化 3.0 的開發體驗和運行效率,支撐好 2D、3D 等不同品類的重度游戲順利上線。

    Cocos Creator 對項目的升級操作是不可逆的,請在升級前提交或備份舊版項目。絕大多數項目通常都能自動升級,但因為項目難免存在特殊性,開發者應該根據項目自身需求,提前對新版本引擎進行試用和評估。此外,出于穩定性考慮,建議即將上線或已上線的項目謹慎升級。詳細的升級說明請參考升級指南,如果開發者們在升級中遇到困難,歡迎向我們反饋,我們會盡力協助。

    2021.02.07

    V3.0.0

    發布時間: 2021.02.07

    在 3.0 預覽版發布后,引擎組收到了大量開發者的熱情反饋,引擎組工程師們動力倍增,經過了又兩個月的迭代后,終于將這灌注了汗水與熱血的產品正式推出。Creator 3.0 統一了 2D 與 3D 的開發工作流,兼顧了輕量與重度游戲的開發體驗,融合了幾乎所有 Creator 2.x 與 Creator 3D 1.x 版本的功能,而這一切都是建立在 Creator 3.0 更加健壯的面向未來的底層架構上,這對引擎組來說是個具有重要意義的里程碑。我們會在 3.0 的基礎上繼續深耕,用真誠的態度和敬業的精神,踏踏實實完善產品體驗,普惠所有開發者。3.0 正式版在預覽版的基礎上,進一步優化了性能,完善了品質,并推出了更多功能,例如接入了 Spine,DragonBones 的原生運行時,支持使用 NPM 庫,重構了 Prefab 系統與 UI 系統等諸多內容。歡迎所有開發者使用與體驗!

    3.0 使用了面向未來的全新引擎架構,將為引擎帶來高性能、面向數據及負載均衡的渲染器,并且無縫支持 Vulkan & Metal 多后端渲染,未來還會支持移動端 VR/AR 及部分主機平臺。下面對 3.0 的部分特性進行簡要介紹。

    強大的編輯器特性

    一體化的編輯器,帶來輕量易用的創作體驗。Cocos Creator 3.0 在 Cocos Creator 2.x 沿用多年的編輯器框架上進行了重構、拓展和升級。

    • 全新界面設計,更加簡潔清晰
    • 資源系統升級,增強對超大項目的支持,更加高效可靠
    • 模塊之間代碼隔離,純消息驅動,更加穩定
    • 插件系統徹底模塊化,迎接更強大的插件機制

    一鍵接入 Cocos Service 優質服務

    Cocos Creator 3.0 可一鍵接入 Cocos 官方推出的各類優質服務,提升開發效率,推出更多優質內容,Cocos 也將持續推出更多更優質的服務。

    全新的 Prefab 系統

    Creator 3.0 重新實現了 Prefab 系統,

    • 支持 Prefab 自動同步
    • Prefab 實例可覆寫 Prefab 資源中的屬性
    • 支持 Prefab 嵌套

    構建

    緩存構建內容

    在構建之后,Creator 3.0 將會緩存大部分構建內容,包括資源,壓縮紋理,自動圖集,引擎代碼等,在之后構建中,如果沒有變化,將直接使用緩存內容,加快構建速度,提升效率。

    任務式構建列表

    構建發布將以構建任務的形式進行,保存每次構建的配置、狀態、log 等,方便切換構建任務以及查看歷史配置。

    構建后單獨編譯、生成

    提取了各個小游戲平臺的生成階段,允許在構建之后修改文件內容重新生成 rpk/cpk,同時可以支持在編譯前后添加構建鉤子來定制構建流程。

    支持 Asset Bundle

    和 2.4 一樣,3.0 也使用 Asset Bundle 作為資源模塊化工具。開發者可以將貼圖、腳本、場景等資源構建為多個 Asset Bundle 中,進而在游戲運行過程中按需加載,從而減少首次下載和加載游戲所需的時間。Asset Bundle 可以按需求隨意放置,比如可以放在遠程服務器、本地,或者小游戲平臺的分包中,也可以跨項目復用,用于加載子項目中的 Asset Bundle。

    Splash Screen

    支持在構建時設置 Splash Screen,用于在游戲啟動之前顯示一段過場動畫,優化首屏啟動速度。

    GameView

    GameView 是內嵌于編輯器的游戲運行面板,開發者無需打開瀏覽器預覽,即可在編輯器中直接運行游戲。除了更無縫的開發體驗,還能在游戲運行過程中通過場景編輯器或其它面板實時調試、修改元素狀態,讓游戲開發更高效!

    插件

    強大的插件系統

    Cocos Creator 3.0 擁有更加強大的插件系統,編輯器幾乎所有功能模塊都是以插件形式存在。你可以在擴展菜單中快速創建自己的插件,從而實現自己想要的效果。另外,Cocos Creator 3.0 還提供了擴展管理器,可以輕松管理所有擴展插件的運行和卸載。

    消息通信

    插件可以使用 IPC 消息與其他插件或編輯器進行通信,快速方便地使用編輯器內部已提供的能力。Cocos Creator 3.0 還提供了消息管理器,可以清晰地看到目前編輯器內已提供的功能,降低插件開發門檻。

    動畫編輯器

    動畫編輯器是我們一直在持續優化的重要模塊,除了標準的位移、旋轉、縮放動畫和序列幀動畫以外,這套動畫系統還支持驅動任意組件屬性和用戶自定義屬性,再加上可任意編輯的時間曲線和創新的移動軌跡編輯功能,能夠讓內容生產人員不寫一行代碼就制作出細膩的各種動態效果,任意驅動游戲邏輯。

    除常規操作外,3.0 的動畫編輯器更提供了以下快捷操作,幫助游戲開發者實現想要的內容:

    • 批量關鍵幀間隔調整
    • 跨節點軌道復制粘貼
    • 間接屬性(如材質屬性)關鍵幀編輯
    • 動畫編輯器內直接對資源進行選取、直接編輯關鍵幀數據
    • 多選關鍵幀的縮放、移動和刪除
    • 支持多選節點后批量添加屬性軌道
    • 支持復制粘貼節點上的所有動畫數據
    • 支持屏蔽無關鍵幀節點與搜索節點
    • 支持編輯分量軌道
    • 支持調整動畫編輯器布局

    更完善的工具鏈

    • 支持模型預覽
      編輯器中選中模型后可以對模型資源進行全方位預覽,也可以查看默認材質中使用的各種貼圖。
    • 新版的 FBX 導入器
    • 支持 glTF 資源的導入,支持 khr-draco-mesh-compression、sparse accessor
    • 支持動畫切割
    • 提供 Mesh Optimizer 工具
    • 模型導入支持 quantized joints/weights

    地形編輯器

    便捷的地形系統,快速繪制地形紋理。地形編輯主要包括三大功能:管理(Manage)、雕刻(Sculpt)、描繪(Paint)。同時支持 Normal Map,PBR 材質和自定義材質。

    內置烘焙系統

    烘焙是通過預先計算光源對物體的影響來生成光照貼圖并應用到場景中的過程,可以在不損失運行效率的前提下大大提升靜態場景的畫面表現。

    配置

    可視化的宏配置

    提供了修改引擎宏配置的快捷方式,配置的宏將會在預覽、構建時生效,同時也會跟隨自定義引擎的配置更新當前宏配置的默認值。

    通過預設批量配置壓縮紋理

    支持添加壓縮紋理預設配置,用于快速配置紋理的壓縮方式。給圖片設置預設后,還可以直接修改預設來批量更新對應的紋理,大大方便了項目的全局管理。

    支持 2.x 項目遷移

    為了方便 2.x 用戶升級,我們在 3.0 中提供了項目遷移插件,可將 2.4.3 以上版本的項目遷移到 3.0.0 版本中,此工具將支持舊項目資源完美導入,以及代碼的輔助導入。代碼輔助導入會把 js 轉換成 ts,添加組件類型聲明、屬性聲明及函數聲明,組件在場景中的引用都會得到保留,并且函數內部的代碼會以注釋的形式導入進來,可以減輕開發者的升級難度。不過 2.x 的 API 和 3.0 仍然有不小的差異,我們能盡可能通過 deprecation 和 removal 機制來做運行時警告,開發者的代碼仍需做不小的調整才能夠完美升級到 3.0。

    強大的引擎特性

    Cocos Creator 2.4 在 2D 渲染方面很強大,Cocos Creator 3.0 則允許開發者制作出更加精美的 3D 游戲。我們在 3.0 中將兩者的優勢進行了融合,全面支持 2D、3D 的各種功能特性,無論 2D 還是 3D,3.0 都將滿足你的需求。

    渲染系統

    渲染系統作為游戲引擎的核心模塊,起著至關重要的作用,直接決定了游戲所能輸出給玩家的內容。一個優秀的渲染系統還必須兼顧各類平臺,抹平平臺間的差異。Cocos Creator 3.0 的渲染系統,從架構到設計都是以面向未來、高性能、跨平臺為目標,極大地提升了渲染能力和健壯性。

    • 支持 Metal, Vulkan, WebGL 1.0,WebGL 2.0,GLES2, GLES3 的多渲染后端,向渲染管線層提供統一的 GFX 圖形 API 層
    • 貼近現代圖形 API 的 GFX API 設計,幫助渲染管線層盡可能釋放現代圖形 API 提供的性能和可能性
    • 內置前向渲染管線,支持用戶自定義渲染管線
    • 基于物理的光源、攝像機和材質,幫助開發者用工業化流程制作最真實的視覺效果。
    • 支持 GPU Instancing 合批優化,適用于繪制大量頂點數據相同的動態模型,更支持對包含骨骼動畫計算的模型進行 instancing 合批
    • 支持全局霧效
    • 強大的原生渲染器,使用內存共享機制減少 JSB 調用,加快數據訪問
    • 支持 ASTC,ETC,ETC2,PVR 等壓縮紋理

    光影

    在 3D 世界中,光與影一直都是極其重要的組成部分,它們能夠豐富環境表現,質量好的陰影可以達到以假亂真的效果,并且使得整個世界更具立體感。

    • 基于物理的光源
      Cocos Creator 3.0 采用光學度量單位來描述光源參數?;诠鈱W度量單位,我們可以將光源的相關參數全部轉化為真實世界中的物理值。這樣,設計人員可根據實際燈光的工業參數以及真實環境的實際物理參數來調節光照強度、顏色、范圍等信息,使整體光照效果和光照衰減更加符合真實的自然環境。
    • 基于多 Pass 的多光源支持
    • 支持高性能的平面陰影 Planar Shadow
    • 基于 Shadow Map 的方向光和聚光燈動態陰影,支持 PCF 軟陰影與 GPU Instancing

    粒子系統

    粒子系統是游戲引擎特效表現的基礎,它可以用于模擬的火、煙、水、云、雪、落葉等自然現象,也可用于模擬發光軌跡、速度線等抽象視覺效果。良好的粒子效果可以使游戲畫面更加驚艷。

    • 支持多達數十個模塊設置,并支持各類曲線,常量變化
    • 支持 GPU 粒子,極大提升渲染性能
    • 支持 Cocos 傳統的 2D 粒子

    材質系統

    材質作為資源,決定了其所附加的物體的渲染效果,幾乎游戲中所有渲染出來的效果都與材質密不可分。材質系統作為基礎模塊,為上層建筑提供了堅實的基礎。

    • 內置基于物理的標準材質
    • 支持 Cocos Effect
      Cocos 設計的基于 YAML 和 GLSL 的 Cocos Effect,是一種單源碼嵌入式領域特定語言 (single-source embedded DSL),YAML 部分聲明流程控制清單,GLSL 部分聲明實際的 Shader 片段,這兩部分內容上相互補充,共同構成了一個完整的渲染流程描述。
    • 支持超過 32 個 Effect 宏定義
    • Cocos Effect 編譯器自動剔除無效代碼
    • 支持導入 Effect 頭文件
    • Effect 的資源面板現已支持預覽編譯后的 Shader 代碼,并支持可視化編輯 Shader 的每個 Define
    • 支持材質預覽

    中間件

    • 支持 TiledMap
    • 支持 Spine、DragonBones
    • 支持 Spine、DragonBones 和 TiledMap 在 3D 場景中渲染(需自定義材質控制深度檢測)

    骨骼動畫系統

    Cocos Creator 3.0 內置了通用的動畫系統用以展示基于關鍵幀的動畫。在編輯器中我們可以很方便地生產關鍵幀動畫剪輯。我們能也支持導入外部 FBX、glTF 資源中已經包含的骨骼動畫,資源管理器中可以對這些動畫進行二次剪輯,在動畫編輯器中可以預覽動畫效果,添加動畫事件觸發器,通過動畫系統 API 也可以自如得控制動畫播放。

    除此之外,我們還支持以下特性:

    • CPU 或 GPU 驅動的骨骼動畫,可自由切換
    • 支持動畫的融合過渡(CPU 驅動)
    • 使用二進制格式存儲骨骼動畫,減少文件大小
    • 支持通用動畫與骨骼動畫兩種組件
    • 支持 Uniform 等材質子屬性動畫
    • 支持 CPU 驅動的 Morph Target (Blend Shape)

    腳本系統

    Cocos Creator 3.0 的項目開發全面轉向了 TypeScript,項目中也不再支持 JavaScript。我們在 3.0 中進一步完善了對 TypeScript 的支持:

    • 擁抱 ES6 和 TypeScript,完善的代碼提示和自動導入
    • 屬性支持獨立的 type decorator: @integer@float@string@boolean@type 等
    • 支持 Async Await 語法
    • 可選鏈(Optional Chaining)支持
    • 空值合并(Nullish Coalescing)支持
    • 某些循環引用行為將在運行檢測并作出警告
    • 增加 core-js polyfills 來幫助部分低端平臺補全 ES6 支持
    • 支持 loose 編譯模式,可以減小包體和優化性能
    • 支持使用 NPM 庫
    • 細分引擎模塊,允許更細致的模塊剔除

    UI 系統

    Cocos Creator 3.0 延續了 2.x 的 UI 設計,并進一步優化升級,包含以下內容:

    • 靈活簡潔的 2D 渲染和 UI 交互、排版組件,支持包括 Sprite, Label, Button, Widget 等 20 種組件,你可以使用這些基礎組件組合出各種類型的 UI 效果
    • 支持靜態合批
      引擎提供了 UIStaticBatch 組件,不需要頻繁改動的 UI 可以使用此組件來緩存渲染數據,從而降低渲染消耗,提高性能
    • 支持運行時動態合圖,減少 drawcall 數量,優化性能
    • 合并了 UI 渲染流程和前向渲染流程,允許 2D 和 3D 渲染組件混排,完全由節點 Layer 和攝像機 Visibility 決定渲染可見性

    物理

    Cocos Creator 3.0 目前內建了輕量的碰撞檢測系統 Builtin 和具有物理模擬的物理引擎 cannon.js,以及由功能強大的 bullet 編譯成為 asm.js/WASM 版本的 ammo.js,并為用戶提供了高效的組件化工作流程和便捷的使用方法。引擎組將持續對物理系統進行完善與優化,提供更多功能特性以及提升性能,并將對接更多物理系統后端,我們很快將在后續版本中推出 PhysX 的后端支持(包括原生平臺,小游戲平臺,Web 平臺),將大大增強物理系統的原生性能和能力,未來更將會支持包括布娃娃系統,布料模擬,CCD 檢測等等功能特性。

    • 支持多物理后端選擇,包括 ammo.js、cannon.js 以及更為輕量的 builtin 物理
    • 支持微信小游戲使用 WASM 物理后端,能在 iOS 上獲得更高的性能表現
    • 物理系統支持固定步長刷新
    • 支持物理材質
    • 支持包括單形、圓錐、平面、地形、膠囊體、圓柱體、靜態網格碰撞體等多種實用的碰撞體
    • 支持點到點、鉸鏈約束組件
    • 網格碰撞器添加凸包近似功能
    • 支持傳統 Creator 2D 物理與碰撞系統

    詳細改動(相比 Creator 3D)

    Editor

    • [3.0 NEW FEATURE] 新的 FBX 導入器
    • [3.0 NEW FEATURE] 編譯時支持 loose 編譯模式
    • [3.0 NEW FEATURE] 地形支持 normal map 和 pbr 材質
    • [3.0 NEW FEATURE] 在 GameView 模式下支持 EditBox
    • [3.0 NEW FEATURE] 支持編譯項目腳本時按照預編譯宏進行代碼剔除
    • [3.0 NEW FEATURE] 支持構建過程中,剔除 deprecated 的兼容代碼,減少包體
    • [3.0 NEW FEATURE] 全新的 Prefab 系統,支持 Prefab 嵌套
    • [3.0 NEW FEATURE] 地形系統支持使用自定義畫刷以及設置法線貼圖
    • [3.0 NEW FEATURE] 支持資源包導入導出功能
    • [3.0 NEW FEATURE] 原生平臺支持腳本加密
    • [3.0 NEW FEATURE] 新增華為 AGConnect 構建平臺
    • [3.0 NEW FEATURE] 新增華為快游戲調試工具
    • [3.0 NEW FEATURE] 支持接入 Cocos Service
    • [Sync 2.x] 支持模擬器預覽
    • [Sync 2.x] 支持發布連尚小游戲平臺
    • [Sync 2.x] 支持發布趣頭條小游戲平臺
    • [Sync 2.x] 支持構建 Android Instant
    • [Sync 2.x] 支持新版序列化機制
    • [Sync 2.x] Asset Bundle 支持
    • [Sync 2.x] 支持預覽時引擎模塊剔除
    • [Sync 2.x] 編輯器支持導入 JSON 資源
    • [Sync 2.x] 編輯器支持導入文本資源
    • [Sync 2.x] 編輯器支持導入 LabelAtlas 資源
    • [IMPROVE] 升級 electron,支持 M1 芯片的電腦

    Engine

    • [3.0 NEW FEATURE] 支持使用 NPM 庫
    • [Sync 2.x] 支持 Tiledmap
    • [Sync 2.x] 支持 Spine
    • [Sync 2.x] 支持 DragonBone
    • [Sync 2.x] 支持 MotionStreak
    • [Sync 2.x] 支持 WebView
    • [Sync 2.x] 支持 VideoPlayer
    • [Sync 2.x] 支持 2d 物理與碰撞系統,包括 box2d 與 builtin
    • [Sync 2.x] 支持 Asset Manager 資源管理
    • [Sync 2.x] 支持 LabelShadow
    • [Sync 2.x] 支持 SafeArea
    • [Sync 2.x] Mask 支持 image stencil
    • [Sync 2.x] 音頻支持多播
    • [Sync 2.x] 支持動態合圖
    • [IMPROVE] UIMeshRenderer 支持接收平行光照
    • [IMPROVE] 移除 cc.Class() 式聲明
    • [IMPROVE] 重構 3d 物理碰撞矩陣,碰撞矩陣僅用于初始化剛體的分組和掩碼,不再維護更新,廢除 Use Collision Matrix 配置項
    • [IMPROVE] 重構 3d 剛體,移除 RigidBody.isKinematic,增加 RigidBody.type 用于設置剛體類型,移除 fixedRotation, 改為使用 angularFactor 代替
    • [IMPROVE] UI 支持自定義材質
    • [IMPROVE] 優化 UI 系統性能,減少 drawcall 數量
    • [FIX] 修復 Safari 14 的性能問題
    • [FIX] 修復 Button 組件 Scale 設置異常的問題
    • [FIX] 修復 submodel 的 lightPassIdx 一致導致渲染出錯的問題
    • [FIX] 修復地形碰撞器在節點縮放后,與渲染效果不匹配的問題
    • [FIX] 修復調用 view.setFrameSize 接口報錯的問題
    • [FIX] 修復 EditBox 組件在 InputMode 不是 ANY 的情況下,設置 label 對齊方式無效的問題
      ?????????

    Mini Game

    • [3.0 NEW FEATURE] 支持全新的子域方案
    • [3.0 NEW FEATURE] 支持微信小游戲使用 wasm 物理后端

    Native

    • [3.0 NEW FEATURE] 支持 Metal 渲染后端
    • [3.0 NEW FEATURE] 支持 Vulkan 渲染后端
    • [IMPROVE] 進一步減少 jsb 調用,優化性能

    Known Issue

    • 安卓上的 Vulkan 后端目前存在性能問題,我們將在之后版本進行修復
    • 在 m1 芯片的機器上,編譯 ios 模擬器會出現報錯,需要手動把 arch 變成 arm64,將在后續版本進行修復
    • Android 暫不支持發布 x86_64 架構
    • 原生平臺暫不支持使用 freetype 進行文字渲染
    • Button 組件暫不支持 enable auto gray effect 選項
    • 目前無法對場景中的 Prefab 實例進行創建組件,刪除組件,刪除子節點,調整子節點順序功能,建議在 Prefab 資源中進行這些操作
    • 場景中節點目前無法引用 Prefab 中的節點或組件
    • 當地形不是 n*n 的時候,烘焙會失敗
    • 老版本項目升級后,Prefab 數據遷移可能會出現問題,請參考帖子獲取最新的修復方案

    Breaking changes

    • 引擎源碼內置的 effect 統一更改為和編輯器資源不同的命名規則,如果項目場景里完全沒有用到某個 effect,現在在腳本里用 effect 名字是獲取不到了(比如 builtin-unlit 等)。建議開發者在需要程序創建材質時,統一把 effect asset 作為腳本的 property 暴露出來,在場景里掛載,然后在 material.initialize 時直接傳入。
    • 編輯器 HOME 目錄從 ~/.CocosEditor3D 切換回了 ~/.CocosCreator,插件目錄由 packages 更名為 extensions。3.0 之后的插件,都會存放在 ~/.CocosCreator/extensions 和 PROJECT/extensions 里
    • 原先的子域方案不再適用,請切換到最新的子域方案
    • 不支持 JavaScript,僅支持 TypeScript
    • 不再支持 cc 全局變量,請通過模塊導入來使用
    • 2D 節點現在也會嚴格按照 layer 和 camera 的 visibility 進行能否渲染的判斷,在多個攝像機存在的情況下可能會出現重復渲染的情況,需要重新調整節點的 layer
    • 物理事件重構,不再支持靜態剛體之間的事件,建議在監聽事件的碰撞體對應節點上添加 Kinematic 或 Dynamic 的剛體組件
    • 無法升級到新的 Prefab 系統的 Prefab,會斷開關系,還原成一個普通節點

    API 更新(相對 Cocos Creator 3D)

    • 物理材質類型名稱進行了變更
    Creator 3D v1.2Creator v3.0
    PhysicMaterialPhysicsMaterial
    • geometry 空間下的部分類型名稱和方法名稱進行了變更
    Creator 3D v1.2Creator v3.0
    lineLine
    planePlane
    rayRay
    triangleTriangle
    sphereSphere
    aabbAABB
    obbOBB
    capsuleCapsule
    frustumFrustum
    MorphModelmodels.MorphModel
    ray_aabbrayAABB
    ray_planerayPlane
    ray_trianglerayTriangle
    ray_sphereraySphere
    ray_obbrayOBB
    ray_capsulerayCapsule
    ray_subMeshraySubMesh
    ray_meshrayMesh
    ray_modelrayModel
    line_planelinePlane
    line_trianglelineTriangle
    line_aabblineAABB
    line_obblineOBB
    line_spherelineSphere
    aabb_aabbaabbWithAABB
    aabb_obbaabbWithOBB
    aabb_planeaabbPlane
    aabb_frustumaabbFrustum
    aabbFrustum_accurateaabbFrustumAccurate
    obb_pointobbPoint
    obb_planeobbPlane
    obb_frustumobbFrustum
    obbFrustum_accurateobbFrustumAccurate
    obb_obbobbWithOBB
    obb_capsuleobbCapsule
    sphere_planespherePlane
    sphere_frustumsphereFrustum
    sphereFrustum_accuratesphereFrustumAccurate
    sphere_spheresphereWithSphere
    sphere_aabbsphereAABB
    sphere_obbsphereOBB
    sphere_capsulesphereCapsule
    capsule_capsulecapsuleWithCapsule
    • sys 下的某些平臺變量進行了變更
    Creator 3D v1.2Creator v3.0
    BAIDU_GAMEBAIDU_MINI_GAME
    VIVO_GAMEVIVO_MINI_GAME
    OPPO_GAMEOPPO_MINI_GAME
    HUAWEI_GAMEHUAWEI_QUICK_GAME
    XIAOMI_GAMEXIAOMI_QUICK_GAME
    JKW_GAMECOCOSPLAY
    ALIPAY_GAMEALIPAY_MINI_GAME
    BYTEDANCE_GAMEBYTEDANCE_MINI_GAME
    • Canvas 組件不再擁有 clearFlag,color,priority,targetTexture,visibility 等屬性,請直接通過 Canvas 組件引用的 Camera 組件獲取
    • 2d 相關的部分組件進行了更名
    Creator 3D v1.2Creator v3.0
    UIRenderableRenderable2D
    UIDrawBatchDrawBatch2D

    升級指南

    為了保障現有的 Cocos Creator 2.4 項目平穩過渡,我們會將 2.4 做為 LTS(長期支持)版本,提供后續兩年的持續更新!在 2021 年,2.4 將繼續更新版本,提供缺陷修復和新的小游戲平臺支持,以及 Apple Silicon (M1) 芯片的支持,保障大家的項目成功上線;在 2022 年我們還將為開發者持續提供 2.4 的關鍵問題修復,保障已上線的游戲平穩運營!因此,

    • 現有的 2.x 項目可以安心繼續開發,無需強制升級 3.0。
    • 新項目則建議使用 3.0 版本開發,我們會不斷優化 3.0 的開發體驗和運行效率,支撐好 2D、3D 等不同品類的重度游戲順利上線。

    而原有的 Cocos Creator 3D 做為 Creator 的分支版本,已經面向中國進行了長達一年的迭代,成功上線了星空大決戰、最強魔斗士等重度項目!3.0 發布后,Creator 3D 也將包含在 3.0 中,現有的 1.2 項目都可直接升級,因此 Cocos Creator 3D 后續不會再發布獨立版本,還望周知。

    雖然我們不建議開發中的項目,特別是即將上線的項目強升 3.0,但是我們仍將在 3.0 正式版推出 2.x 資源導入工具。如果現有項目有特殊原因需要升級,并且遇到了技術上或者工作量上的困難,也可以聯系 zhengxiong.zhao@cocos.com 獲取我們的人工協助!

    參考文檔

    2021.02.01

    V2.4.4

    發布時間: 2021.02.01

    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

    • 修復編輯器插件里的插件腳本在小游戲平臺加載失敗的問題
    • 修復微信平臺部分機型從后臺切回后,Label 消失的問題[#215]
    • 修復微信小游戲游戲過程中接電話后導致游戲卡住的問題 [#219]

    Web

    • 修復 Safari 14 上性能下降的問題[#8192]
    • 修復 Web 平臺密碼類型輸入框輸入小寫字母時卻顯示大寫字母的問題[#7793]

    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 升級文檔》進行調整。

    2020.10.09

    V2.4.3

    發布時間: 2020.10.09

    Cocos Creator 2.4.3 正式版終于來啦!本次更新帶來了很棒的新特性以及性能提升,例如支持 Prefab 的嵌套使用和Android x86_64 的支持等,另外,修復了 2.4 版本以來的問題,提升了編輯器穩定性,希望大家使用起來能夠更加得心應手,事半功倍。建議所有開發者升級哦!升級之前請做好相關備份工作!

    What’s new

    • 支持 Prefab 嵌套

    支持在 Prefab 中嵌套使用其他 Prefab,從而減少重復資源數量,并且更加利于維護與更新。

    • 新增對 Android x86_64 的支持

    Android 平臺可選擇 x86_64 進行構建,構建之后可在更多設備與模擬器上運行。

    • 模擬器增加是否清空緩存的選項

    Improvements

    • 優化構建后 JSON 文件大小,配合合并所有 JSON,最多能減少最多 30% JSON 體積
    • 升級物理引擎 Cannon 版本到 1.1.1
    • 原生平臺支持下載遠程資源失敗后使用斷點續傳[#345]
    • 優化編輯器導入 Plist 資源速度
    • 優化編輯器下執行 cc.resources.load 的性能
    • 支持加載存儲空間中的 Asset Bundle [#153]

    Engine

    • [CORE]修復 SpriteFrame 的 clone 方法中共享屬性的問題 [#7030],感謝大城小胖
    • [CORE]修復 editorOnly 作用于資源屬性時,資源無法從構建中剔除的問題[#7048]
    • [CORE]修復 cc.Quat.rotateX, cc.Quat.rotateY, cc.Quat.rotateZ 計算結果可能不正確的問題[#7036]
    • [CORE]修復 setPosition 與 setScale 不傳入 z 值,z 值重置為 0 的問題[#7104],感謝大城小胖
    • [AUDIO]修復 AudioSource 無法獲取 duration 的問題[#7035]
    • [AUDIO]修復 AudioSource 組件勾選 loop 和 mute 無效的問題 [#6935]
    • [AUDIO]修復切換場景時,音頻沒有停止播放的問題[#7317]
    • [PARTICLE]修復粒子系統 InputAssembler 沒有清空的問題[#7060],感謝 caogtaa
    • [PARTICLE]修復粒子系統組件無法切換圖集中其他 SpriteFrame 的問題[#7000]
    • [LABEL]修復 Label 渲染出現一些突刺的問題[#7132]
    • [LABEL]修復 LabelOutline、LabelShadow、MotionStreak 組件的 color 屬性共享的問題[#7027]
    • [LABEL]修復在 start 里修改 Label 顏色無效的問題。[#7018]
    • [LABEL]修復 BITMAP 模式下的文本隱藏時修改 string 屬性無效的問題。[#7003]
    • [PHYSICS]修復剛體一旦進入休眠,使用其他剛體撞擊,無法產生碰撞效果的問題[#7119]
    • [CAMERA]修復在沒有攝像機時渲染 EditBox, VideoPlayer, WebView 崩潰的問題,[#332]
    • [CAMERA]修復 onLoad 函數中,獲取不到攝像機正確尺寸的問題,[#7073]
    • [WIDGET]修復 widget 設置為 ON_WINDOW_RESIZE 時, 當使用 setContentSize 時,沒有更新的問題[#7275]
    • [ASSET]修復多次加載同一 Asset Bundle,加載失敗的問題[#7424]
    • [ASSET]修復連續調用 loadRemote 加載同一張圖片,加載失敗的問題[#6941]
    • [ASSET]修復加載資源失敗后,progress 回調還在執行的問題[#7121]
    • [ASSET]修復 Bundle.load 傳入數組時,返回值不是數組的問題[#6923]
    • [ASSET]修復腳本加載順序可能不正確的問題[#7065]
    • [ASSET]修復延遲加載時,無法切換 Sprite.spriteFrame 的問題,[#7233]
    • [ASSET]修復項目腳本中過早調用 cc.resources , 提示不存在的問題

    Native

    • 修復 Android 平臺 SafeArea 組件寬高不對的問題[#2562]
    • 修復 Android 旋轉后沒有重新計算 SafeArea 的問題[#337]
    • 修復 iOS 設備屏幕翻轉后,重力感應不對的問題[#2791]
    • 修復 iOS 設備方向設置為 upside down,顯示錯誤的問題[#2787]
    • 修復 iOS 平臺在 LaunchScreen 畫面的時候,立即旋轉,可能出現觸摸坐標異常的問題[#309]
    • 修復 Android 4.4 以下崩潰的問題[#2532],感謝 deyongzhong
    • 修復潛在的內存泄漏和空指針問題[#2512],感謝 quink-black
    • 修復彈出和收回 EditBox 導致屏幕寬度改變的問題[#2630]
    • 修復 iOS 端 EditBox 編輯文字,光標自動跳轉到末端的問題[#2669]
    • 修復 iOS 下 EditBox 韓文聯想被打斷的問題[#2669]
    • 修復下載資源失敗后臨時文件沒有被刪除的問題[#2629]
    • 修復 iOS 上緩存資源路徑拼接錯誤的問題[#311]
    • 修復加載遠程服務器上的 spine 和 dragonbone 無法顯示的問題[#322]
    • 修復 Dragonbone 崩潰的問題[#351]
    • 新增 ENABLE_NATIVE_TTF_RENDERER 宏用于控制是否使用原生渲染器進行 ttf 字體的渲染 [#7053]
    • 修復原生平臺無法開啟 mipmap 的問題[#2689]
    • 修復原生平臺聚光燈渲染錯誤的問題 [#2695]
    • 修復 async 函數中的異常不會打印的問題 [#328]
    • 修復 iOS VideoPlayer 跳轉不準確的問題[#2531],感謝 goesByhc
    • 修復 VideoPlayer.play 在視頻未加載完成時調用,不會播放的問題[#329]
    • 修復調用 CallStaticObjectMethod 出現異常閃退的問題[#2706]
    • 修復原生平臺 cc.game.restart 報錯的問題[#347]
    • 修復原生平臺 ttf 資源放遠程服務器上加載失敗的問題[#7380]

    Editor

    • 修復在編輯器中給對象添加 DontSave 私有標記時 undo 會報錯的問題
    • 修復編輯器下 cc.resources.loadDir 返回值與運行時不一致的問題
    • 修復預覽時加載 Asset Bundle 中所有資源報錯的問題
    • 修復設置 Bundle 為合并所有 JSON 文件后,無法完全合并 JSON 文件的問題
    • 修復罕見的情況下場景或預制中的 RichText 數據如有問題時會導致編輯器崩潰的問題
    • 修復 timeline 面板彈出的時候,加載不到動畫的問題
    • 修復在編輯器中修改 SphereCollider3D 的 center 值,gizmo 沒有更新的問題。
    • 完善編輯器 UI
    • 修復預覽構建后的項目,可能會出現加載失敗的問題
    • 修復導出資源時沒有導出依賴資源的問題
    • 修復插件中的 auto-atlas 無法構建的問題
    • 修復動畫編輯器添加的幀事件參數為 boolean 類型數值為 false 的時候出現無效的問題
    • 修復沒有勾選物理模塊時,預覽報錯的問題[#7075]

    Mini Game

    • 修復小游戲在軟鍵盤拉起狀態下,切換輸入框,導致輸入狀態混亂的問題[#136]
    • 修復 loadRemote 無法加載臨時目錄中的圖片的問題[#155]
    • 修復微信上,XHR 無法設置 timeout 屬性的問題[#164]
    • 修復部分小游戲平臺,音頻播放失敗的問題[#7341]

    Web

    • 修復火狐瀏覽器點擊視頻無法暫停播放的問題[#7372]
    • 修復 iOS14 設備上幀率過低的問題[#7415]

    升級提示

    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 升級文檔》進行調整。

    2020.07.30

    V2.4.2

    發布時間: 2020.07.30

    繼上周發布了 v2.4.1 之后,Cocos Creator 又為大家帶來了呼聲已久的 字節小游戲 平臺支持!新的平臺總是意味著新的機遇與挑戰,將為開發者帶來更多的用戶及潛力,我們也期待字節小游戲上能爆發出更多優秀的產品!我們建議需要發布字節小游戲的開發者將引擎升級到最新版本,以獲得最佳的使用體驗。

    What’s new

    字節小游戲

    字節小游戲基于字節跳動全產品矩陣開發,包含 今日頭條、抖音 及 今日頭條極速版,是不需用戶進行下載,點開即玩的全新游戲類型,與圖文、視頻等場景有著天然的搭配性。字節跳動全產品矩陣以內容分發為核心,通過內容帶動小游戲分發,由內容為小游戲帶量以及裂變。目前已有十分豐富的應用場景,在自然搜索、feed 流、個人主頁、小視頻、視頻評論區等地方均有流量入口,詳細說明可參考《了解小游戲:流量入口概述》。在收入方面,字節小游戲目前已支持廣告及內購兩種變現方式。

    采用 Creator 開發的游戲,只需構建時選擇 字節跳動小游戲 發布平臺,就可以自動完成適配,獲得 Cocos Creator 強大便捷的跨平臺能力,享受到最熟悉的開發體驗。詳細內容請參考 發布到字節小游戲。

    為了更好地服務字節開發者,我們還在論壇開辟了 字節小游戲專區,請所有開發者統一到此專區或者 Cocos 小秘書中進行技術咨詢和反饋。這樣我們才可以匯總、整理常見問題,提升服務體驗。此外,Cocos 也會跟字節跳動繼續合作,爭取為開發者輸送更豐富的字節小游戲平臺能力。

    Known issues

    • iOS 設備升級到 iOS 14 beta.3 后,Web 平臺暫時會出現無法顯示畫面的問題,可以自定義引擎,并手動合并此改動 #6974 進行修復。

    v2.4.1 已同步解鎖字節平臺

    v2.4.2 和 v2.4.1 在產品功能上完全一致,因此我們也直接為現有 v2.4.1 用戶們通過熱更新的方式解鎖了字節小游戲的發布入口。v2.4.1 用戶只需要在網絡連通的情況下啟動 Cocos Dashboard 1.0.8,再打開編輯器即可。如未成功,請確保 Cocos Dashboard 使用的是最新的 1.0.8,并且完整退出再重開,而不僅是縮小到了托盤中。
    此外,好消息再次廣而告之一下:v2.4.1 已經支持了華為 AppGallery Connect 平臺,并且可以一鍵接入華為 HMS Core,當前包含賬號、支付、廣告游戲等服務,近期還將陸續支持推送、分析定位等 SDK。

    接下去,Cocos Creator 將與華為進行全方位的合作,特別是在技術層面上,與 CG Kit 底層算法集成,挖掘 Vulkan 極限渲染能力,釋放更大的圖形渲染性能,提升渲染效率。在產品層面,也將陸續接入華為 HMS Core、AppGallery Connect 更多優質服務,助力開發者開發出更多高品質的游戲。

    版本預告

    v2.4.3 目前正在論壇公測,此版本除了包含最近支持的華為 AppGallery Connect、連尚小游戲、字節小游戲平臺外,還有一系列重磅升級。如支持 Prefab 嵌套、減小 JSON 包體、優化場景加載表現、支持 Android x86 64 位架構等。歡迎訪問 公測交流帖 體驗反饋。我們感謝所有的用戶反饋,企業服務、Cocos 小秘書服務、論壇討論及 Beta 交流帖。這些反饋成為了我們梳理開發優先級、制訂路線圖時的重要依據。

    升級提示

    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 升級文檔》進行調整。

    2020.07.23

    V2.4.1

    發布時間: 2020.07.23

    新的平臺總是意味著新的機遇與挑戰,Creator 2.4.1 版本現已全新支持 HUAWEI AppGallery Connect,將為開發者帶來更多的用戶及潛力,相信新的平臺能爆發出更多優秀的游戲。

    同時,Cocos Creator 在移動端游戲上與 HMS Core 進行深度合作,特別是在技術層面上,與 CG Kit 底層算法集成,挖掘 Vulkan 極限渲染能力,釋放更大的圖形渲染性能,提升渲染效率。

    接下去,Cocos 將與華為進行全方位的合作,持續接入華為 HMS Core、AppGallery Connect 更多優質服務,助力開發者開發出更多高品質的游戲。

    此版本讓你的游戲可以一鍵接入華為 HMS Core,一鍵上傳至 HUAWEI AppGallery Connect 快速發布到華為應用市場,省去開發過程中接入 SDK、上傳平臺等繁復操作,助力開發者打造高品質創新應用,提升游戲體驗!

    What’s new

    新增 HUAWEI AppGallery Connect 平臺

    良好的服務是游戲不可或缺的部分,在游戲開發中,開發者常常會需要通過接入 SDK 來使用一些第三方的服務。但接入過程通常是繁雜且易出錯的部分,需要耗費大量不必要的時間。

    在 Creator 中,開發者基于 Cocos 的 IDE 進行游戲發布時,當選擇發布到 HUAWEI AppGallery Connect,可以一鍵接入華為 HMS Core,當前包含賬號、支付、廣告和游戲等服務,近期還將支持推送、分析和定位等,可極大提升開發者的工作效率。

    開發者可在服務面板中啟用 SDKHub 并配置好對應的 SDK 預設。

    在構建時選擇 HUAWEI AppGallery Connect 平臺,并選擇已配置好的 SDK 預設即可。

    在構建完成后,可通過上傳窗口一鍵上傳。

    新增連尚小游戲發布平臺

    連尚小游戲是 WiFi 萬能鑰匙旗下的小游戲應用平臺,具有便捷、輕量、免安裝的特點。采用 Creator 開發的游戲,只需構建時選擇連尚小游戲發布平臺,就可以自動完成適配,獲得 Cocos Creator 強大便捷的跨平臺能力。

    更多關于發布連尚小游戲的內容,請參考 發布到連尚小游戲。

    Bug fixes

    • [Engine]修復運行時插件腳本執行順序錯誤的問題 #6983
    • [Engine]修復場景啟用延遲加載可能出現加載失敗的問題 #6983
    • [Native]修復原生平臺富文本組件文字排版錯誤的問題 #6975
    • [Editor]修復進入 Prefab 編輯器模式時,場景視圖自動切換為 2D 視圖的問題
    • [Editor]修復小米小游戲,OPPO 小游戲,vivo 小游戲平臺將主包配置為小游戲分包后,構建失敗的問題

    Known issues

    • iOS 設備升級到 iOS 14 beta.2 后,Web 平臺暫時會出現無法顯示畫面的問題,可以自定義引擎,并手動合并此改動 #6974 進行修復。我們將繼續跟進 iOS 14 后續版本,避免造成兼容性問題。

    升級提示

    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 升級文檔》進行調整。

    2020.06.24

    V2.4.0

    發布時間: 2020.06.24

    工欲善其事,必先利其器!在長達兩個月的測試后,2.4.0 版本終于來了!在此感謝給予我們寶貴意見和建議的各位小伙伴們!這個版本中包含了許多新的功能與更新,如資源管理系統重構,Asset Bundle。并優化了原生上 Label 渲染的性能,優化 Graphic 渲染效果等等。相信全新的 2.4 版本將會讓大家的工作效率更加高效,游戲內容更加豐富,游戲體驗進一步提升,建議所有開發者升級哦!

    What's new

    支持 Asset Bundle 功能

    Asset Bundle 可將工程中的資源按照開發者的意愿進行模塊劃分,將不同場景不同需求的資源劃分在多個包中,從而可以減少首次下載和加載游戲時所需要的時間,也可以跨項目復用,用于加載子項目中的 Asset Bundle。

    Asset Bundle 還提供了優先級,壓縮類型等相關設置用于對 Asset Bundle 的包體和加載進行優化。

    詳細請參考 Asset Bundle 和 加載 Asset Bundle。

    新增 cc.AssetManager 模塊用于資源管理

    Asset Manager 是 Creator 在 v2.4 新推出的資源管理器,其具備加載資源,查找資源,銷毀資源,緩存資源,Asset Bundle 等功能。Asset Manager 擁有更好的性能,更易用的 API,更強的擴展性。其主要提供了以下幾點新特性:

    • 支持所有資源的加載與預加載,預加載能以更輕量的方式靜默運行,不影響運行效率
    • 支持 Asset Bundle
    • 支持更安全的自動釋放機制,釋放資源時無需考慮其引用情況,避免錯誤釋放資源
    • 支持下載失敗重試,下載優先級,下載并發數等設置,可根據各種情況進行調整
    • 支持更方便地定制加載流程,實現特殊效果

    詳細請參考 Asset Manager 和 動態加載。

    增加 Label 的混合選項

    支持設置 Lable 的混合選項,可在不同的使用場景下使用不同的設置以最大化文本渲染性能。詳細請參考 系統文本的混合模式說明 。

    原生平臺上使用 FreeType 渲染 Label

    原生平臺上使用 FreeType 渲染 Label 的 CHAR 模式

    • 提升大段文本的 Label 初始化速度,Android 提升 5 倍左右,iOS 提升 3 倍
    • 在使用 TTF 字體和 Char 模式時支持 Bold,Outline,Shadow 等效果

    支持 Graphic 的抗鋸齒效果

    使用 SDF 技術優化 Graphic 的鋸齒問題

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

    編輯器進一步支持更多小游戲平臺的壓縮紋理限制,只需在 Mini Game 項添加壓縮紋理格式,即可設置包括微信小游戲,OPPO 小游戲,vivo 小游戲等多個平臺的壓縮紋理格式。

    完善原生熱更新支持 #2312

    2.4 進一步完善原生熱更新能力,優化了以下內容:

    • 添加獲取更新包大小接口
    • 對鏈接添加 MD5 參數,對 CDN 更加友好
    • 解決更新過程中斷導致的資源丟失和錯亂的問題

    詳細請參考 熱更新范例教程 。

    新增 SafeArea UI 組件

    該組件會將所在節點的布局適配到異形屏手機的安全區域內,可適配 Android 和 iOS 設備,詳細可查看 SafeArea 組件參考 。

    其它新增特性

    • 增加壓縮紋理緩存功能,構建之后將壓縮紋理進行緩存,重復構建時將盡量復用緩存內容,加快構建速度
    • 在 Web 平臺使用 ImageBitmap 加載圖片,提升預覽和 Web 平臺圖片解析速度,減少加載時的卡頓
    • 編輯器屬性面板支持拖拽數組賦值
    • 升級 TypeScript 的版本到 3.9.2
    • 升級原生平臺的 V8 版本到 8.0.426.16
    • 支持導入 GLTF 資源
    • 在所有小游戲平臺支持首場景分包功能
    • 支持預覽時進行模塊剔除,提升預覽速度,還能更早暴露錯誤的模塊剔除設置

    Improvements

    • 優化 2D 粒子系統 free 和 relative 模式的性能 #6236
    • 優化 ToggleContainer 獲取 toggleItems 的效率 #6569
    • 提升原生平臺 WebSocket 帶寬 #2353
    • SpriteFrame 資源增加 None Trim 類型,可快速設置為無裁剪
    • 完善 jsb 的代碼提示
    • 支持設置預覽端口
    • 原生桌面平臺構建時可設置窗口大小

    Engine

    • [CORE]修復 cc.easeBackOut 在 time 為 0 時返回值不正確的問題,#6728,感謝 chen-gaoyuan
    • [CORE]修復 Node.walk 遍歷錯誤的問題 #6710
    • [CORE]修復調用 cc.dynamicAtlasManager.showDebug 報錯的問題 #6697
    • [CORE]修復 onLoad 中設置節點的 size 無效的問題 #6688
    • [CORE]修復按鈕禁用狀態下的材質將背景材質重置回默認材質的問題 #6562
    • [CORE]修復 BMFont 配置數據不存在時的報錯 #6472
    • [CORE]修復開啟預乘后,透明度無效的問題 #6451
    • [CORE]修復 Camera.render() 渲染兩次的問題,#6355,感謝 大城小胖
    • [CORE]修復調用 Texture2D.setPremultiplyAlpha 之后圖片翻轉的問題 #6602
    • [PARTICLE]修復 2d 粒子系統 relative 模式,節點旋轉時,粒子跟隨的問題 #6236
    • [3D]修復 3D Label 在 char 模式下不顯示的問題#6882
    • [3D]修復勾選 Enable Auto Batch 選項并切換 Mesh 資源導致渲染錯誤的問題 #6901
    • [3D]修復渲染單個 Camera 陰影錯位的問題 #6477
    • [3D]修復 effect 中 cc_matProj 錯誤的問題 #6653
    • [EDITBOX]修復 number 模式下,EditBox.maxLength 屬性不生效的問題 #6725
    • [EDITBOX]修復 EditBox 在 ScrollView 里滾動時,無法更新位置的問題 #6634
    • [TILEDMAP]修復 Tiled Map 渲染順序可能錯誤的問題 #6284
    • [TILEDMAP]修復 Tiled Map 隱藏的圖像還是會渲染的問題 #6309
    • [SPINE]修復 Spine 紋理使用壓縮紋理后渲染錯誤的問題 #6483
    • [SPINE]修復 Spine 貼圖可能渲染錯誤的問題 #6584
    • [SPINE]修復貼圖設置為預乘后,DragonBone 與 Spine 渲染錯誤的問題 #6696,感謝 大城小胖
    • [DRAGONBONE]修復 DragonBone 在銷毀場景時一直報錯的問題 #6553

    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
    • 修復安卓平臺,剔除 AudioSource 模塊導致 audioEngine 無法使用的問題
    • 修復 Android 9, Android 10 版本號檢測失敗的問題 #6466

    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
    • 修復還原上次保存無效的問題
    • 修復設置預覽瀏覽器無效的問題
    • 修復導入 Cocos Studio 工程沒有字體資源的話,會出現報錯的問題
    • 修復多開可能造成編輯器錯誤的問題

    Known Issues

    • 使用遠程 Asset Bundle 并勾選 延遲加載 時,音頻可能無法播放,請使用 cc.assetManager.postLoadNative 加載后播放。

    升級提示

    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 升級文檔》進行調整。
    以上就是本次更新的內容,大家有任何意見或者建議,可以通過論壇等渠道向我們反饋哦!

    2020.05.25

    V2.3.4

    發布時間: 2020.05.25

    優質的服務對于高效的工作流來說是不可或缺的!為了讓開發者盡情揮灑創作才能,Creator 在 2.3.4 中接入了騰訊云的高品質服務,開發者可在 Creator 中非常方便地接入并使用。相信有了這些服務的加持,開發者們能夠創作出更多優秀的作品!

    騰訊云 - 云開發

    云開發(Tencent Cloud Base,TCB) 是騰訊云為移動開發者提供的一站式后端云服務,它幫助開發者統一構建和管理資源,免去了移動應用開發過程中繁瑣的服務器搭建及運維、域名注冊及備案、數據接口實現等繁瑣流程,讓開發者可以專注于業務邏輯的實現,而無需理解后端邏輯及服務器運維知識,開發門檻更低,效率更高。
    開發者可在 Creator 一鍵接入該服務,更多詳細內容請參考 云開發。

    在接入服務后,可在云函數面板管理所有云函數,包括增加,刪除,同步等操作。

    具體操作可參考 視頻《如何在 Cocos Creator 中開通騰訊云TCB服?》 。

    騰訊云 - 小游戲聯機對戰引擎

    小游戲聯機對戰引擎(Mini Game Online Battle Engine,MGOBE) 為游戲提供房間管理、在線匹配、幀同步、狀態同步等網絡通信服務,幫助開發者快速搭建多人交互游戲。開發者無需關注底層網絡架構、網絡通信、服務器擴縮容、運維等,即可獲得就近接入、低延遲、實時擴容的高性能聯機對戰服務,讓玩家在網絡上互通、對戰、自由暢玩。MGOBE 適用于回合制、策略類、實時會話(休閑對戰、MOBA、FPS)等游戲。
    開發者可在 Creator 一鍵接入該服務,更多詳細內容請參考 小游戲聯機對戰引擎。

    具體操作可參考 視頻《如何在 Cocos Creator 中開通騰訊云 MGOBE 服務?》 。

    騰訊云 - 游戲多媒體引擎

    游戲多媒體引擎(Game Multimedia Engine,GME) 提供一站式語音解決方案。針對不同場景進行深度優化,覆蓋游戲、社交、娛樂等多種泛互聯網行業應用場景。提供實時語音、語音消息及轉文本、語音分析服務,一次接入即可滿足多樣化的語音需求。

    開發者可在 Creator 一鍵接入該服務,更多詳細內容請參考 游戲多媒體引擎 。

    其它特性

    • vivo 小游戲支持引擎插件分離功能,詳情請查看 發布流程

    升級提示

    Cocos Creator 對項目的升級操作是不可逆的,請在升級前提交或備份舊版項目。絕大多數項目通常都能自動升級,但因為項目難免存在特殊性,開發者應該根據項目自身需求,提前對新版本引擎進行試用和評估。此外,出于穩定性考慮,建議即將上線或已上線的項目謹慎升級。以下是升級說明,如果開發者們在升級中遇到困難,歡迎向我們反饋,我們會盡力協助。

    從 < 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 升級文檔》進行調整。
    以上就是本次更新的內容,大家有任何意見或者建議,可以通過論壇等渠道向我們反饋哦!

    2020.04.09

    V2.3.3

    發布時間: 2020.04.09

    效率即是一切,Cocos Creator 2.3.3 正式版來啦!本次更新帶來了更多新的特性,優化了性能以及提升了穩定性,希望能為廣大開發者們保駕護航。建議所有開發者升級哦!

    支持 PCF 軟陰影

    從 2.3.3 開始,Light 組件可以設置陰影類型為 SOFT_PCF3X3 或 SOFT_PCF5X5 來開啟軟陰影。開啟后陰影就不會有硬邊緣,效果更加柔和自然。

    支持 Sprite 在 TILED 模式下使用九宮格縮放

    從 2.3.3 開始,在 tiled 模式下如果 SpriteFrame 包含九宮格配置,平鋪時將保持九宮格的四周寬度不變,只平鋪中心部分。

    提升網頁預覽時的加載速度

    為了進一步提升開發效率,我們優化了網頁預覽時的腳本加載速度。不論是對引擎還是項目中的代碼,載入速度都獲得了提升。特別是在開啟自定義引擎,或者使用手機掃碼預覽時,開發者都能得到更順暢的體驗。

    新增 Cocos 小秘書服務

    小秘書是由 Cocos 官方面向開發者推出的在線即時付費技術支持服務, 您可以采用 IM 即時溝通的方式,在 Cocos Creator 中直接連線引擎官方技術支持團隊。小秘書服務旨在快速解答您在開發過中遇到的各種技術和商務問題,具有以下特點:官方專業團隊、高效和私密性。服務申請入口>

    Engine  

    • [Core] 修復單點觸摸的情況下,觸摸時隱藏節點將無法觸發觸摸事件的問題 #6395
    • [Core] 修復場景開啟資源延遲加載時,AudioSource 組件設置 Play On Load 無效的問題 #6412
    • [Core] 修復 Spine 資源如果沒有設置 defaultSkin 將渲染錯誤的問題 #6432
    • [Core] 修復 Label 使用 BITMAP 模式下字符串為空時的警告 #6315
    • [Core] 修復 RichText 無法輸入單個尖括號文本的問題 #6314
    • [Core] 修復 VideoPlayer 在不同平臺獲取到的當前時間可能不一致的問題 #6360
    • [Tween] Tween 增加 stopAll、stopAllByTag、stopAllByTarget 等接口,方便對播放進行控制 #6338
    • [Tween] 增加 bezierTo、bezierBy、flipX、flipY、blink 接口 #6327
    • [Tween] 優化 Tween.to、Tween.by 的 API 代碼智能提示,可以智能展示 target 屬性
    • [3D] 增加 Node.forward、Node.right、Node.up API 用于獲取節點在世界坐標系中的各個方向 #6287
    • [3D] 修復 Sprite 節點切換 3D 節點設置時可能渲染錯誤的問題 #2335
    • [3D] 修復 Node.eulerAngles 變化時,沒有觸發 ROTATION_CHANGED 事件的問題 #6325
    • [3D] 修復 cc.Rotate3DBy 旋轉不正確的問題 #6377
    • [3D] 修復內置 Effect 中頂點切線轉換到世界坐標系中計算錯誤的問題 #6358
    • [3D] 修復 Mesh 設置的頂點數量超過原有數量時數據失效的問題 #6359

    Native 

    • 修復原生 SocketIO 在服務器關閉時發起請求可能出錯的問題 #2338
    • 修復 jsb.fileUtils.listFilesRecursively 返回值不正確的問題 #2337
    • 修復 Android 設備 cc.sys.getSafeAreaRect 計算錯誤的問題 #2145
    • 修復原生平臺 Label 使用 emoji 后換行效果不正確的問題 #6353
    • 修復原生平臺 Graphic 如頂點過多將無法繪制的問題 #1935
    • 修復 Windows 與 Mac 平臺初始化階段獲取到錯誤的 devicePixelRatio 的問題 #2309
    • 修復 3D 粒子在原生平臺沒有開啟 TrailModule 時的拖尾材質報錯 #6413

    Mini Game  

    • 適配 PC 微信小游戲數字鍵盤按鍵 #98
    • 修復 OPPO 快游戲 Label 文字頂部被截斷的問題 #6441

    Web  

    • 修復屏幕 resize 之后,EditBox 輸入框顯示錯位的問題 #6347
    • 修復移動端鍵盤拉起狀態按鈕不響應觸摸事件的問題 #6337
    • 修復在 iOS 的 UC 瀏覽器上 EditBox 編輯結束后界面適配不正確的問題 #6471
    • 修復百度瀏覽器 VideoPlayer 在輸入文字后被隱藏的問題

    Editor

    • 支持在屬性面板上展示網格的 attributes 信息
    • 增加對項目腳本中 require 路徑的大小寫校驗
    • 修復在編輯器中預覽粒子時,出現塊狀物遮擋的問題
    • 修復組件 @menu 裝飾器無效的問題
    • 修復 Cocos Dashboard 設置語言后,編輯器無法打開的問題
    • 修復編輯器中有時會出現一個進度條的問題
    • 修復屬性面板在多選節點時,點擊 3D 切換按鈕無效的問題
    • 修復導入 ccs 工程出現報錯的問題
    • 修復編輯器內刪除 3D 粒子材質時報錯的問題
    • 修復添加錄制動畫編輯器時,動畫剪輯與節點重命名無效的問題
    • 修復動畫編輯器對攝像機 backgroundColor 做動畫時出現報錯的問題
    • 修復腳本報錯后刪除腳本仍無法清除控制臺報錯的問題
    • 修復自定義組件菜單沒有按字母排序的問題
    • 修復粘貼菜單在沒有選中節點的時候無效的問題
    • 修復材質刪除 texture 屬性后出錯的問題
    • 修復 EditBox 節點在屬性面板中選擇 Reset All 菜單項后報錯的問題
    • 修復模型中有相同名字材質會導致導入失敗的問題
    • 修復設置自動同步后,Prefab 刪除子節點時無法自動同步到原始的 Prefab 的問題
    • 修復使用錯誤的自定義引擎會導致編輯器無法啟動的問題

    升級提示

    Cocos Creator 對項目的升級操作是不可逆的,請在升級前提交或備份舊版項目。絕大多數項目通常都能自動升級,但因為項目難免存在特殊性,開發者應該根據項目自身需求,提前對新版本引擎進行試用和評估。此外,出于穩定性考慮,建議即將上線或已上線的項目謹慎升級。以下是升級說明,如果開發者們在升級中遇到困難,歡迎向我們反饋,我們會盡力協助。

    從 < 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 升級文檔》進行調整。

    2020.03.16

    V2.3.2

    發布時間: 2020.03.16

    Cocos Creator 2.3.2 版本正式發布了!為了提升開發者的開發效率,Creator 始終在努力著。本次更新除了常規的缺陷修復和體驗完善之外,還接入了全新的 Cocos Dashboard 系統,能夠同時對多版本引擎和項目進行統一升級和管理!建議所有 2.3 版本的開發者升級!

    Cocos Dashboard

    此次推出的 Cocos Dashboard,將做為 Creator 和 Creator 3D 兩個引擎統一的下載器和啟動入口,方便大家升級和管理多個版本的 Creator。此外還集成了統一的項目管理及創建面板,方便大家同時使用不同版本的引擎開發項目。

    管理不同版本下開發的項目

    新建項目時可以選擇使用不同的 Creator 版本

    Bug Fixes

    • [Editor] 修復當相關圖片不存在時,TiledMap 資源導入卡住的問題
    • [Core] 修復 3D 粒子面片朝向不正確的問題 #6304
    • [Core] 修復版本升級后 MeshRenderer 的 textures 屬性失效的問題 #6311
    • [Core] 修復在場景初始化時,Canvas 所在節點的尺寸可能未及時刷新的問題 #6308
    • [原生] 修復原生上圖片偶爾出現白塊的問題 #2258
    • [原生] 修復原生平臺 3D 模型渲染組件內存可能不釋放的問題 #2262
    • [小游戲] 修復支付寶小游戲上,同時加載大量音頻失敗的問題 #97

    KNOWN ISSUE

    • 目前在 v2.3.2 中導入 Cocos Studio 項目時會出現報錯,此問題將在 v2.3.3 版本修復。開發者如有需要的話可以臨時先在舊版本編輯器中導入項目,然后再升級到 v2.3.2 版本進行使用,或者使用自定義引擎并合入此改動 #6278

    DEPRECATION

    • 從 v2.2.0 開始,我們不再建議您使用節點的 Skew 功能。Skew 通常用作在 2D 引擎中模擬 3D 效果,隨著 Cocos Creator 對 3D 節點的深入支持,Skew 效果已經完全可以由 3D 節點來實現。所以為了統一使用體驗,進一步優化引擎底層實現,我們廢棄了 Skew 屬性。不過我們依舊會保留一段時間內的向下兼容,開發者可在舊項目中延續原有做法。后續我們將進一步完善兼容方式和升級案例,擇機正式移除 Skew 功能。

    升級提示

    從 < 2.3.0 版本升級

    如果預覽時出現加載警告 “Can not find module.module for path…”這個警告可能是因為升級到 2.3 后,對腳本 import/require 的路徑大小寫檢測變嚴格了。在舊版本中,如果路徑的大小寫和實際文件不符,可能會有潛在的一些錯誤隱患,但不一定會表現出來。我們建議遇到這個問題的項目對相應大小寫進行修正。
    從 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.NodePool 管理節點,則不受影響。

    從 < 2.0 版本升級

    打開 1.x 項目的話,場景等所有資源將會自動升級,代碼如有警告或報錯,可參考《1.10.0 資源升級指南》《2.0.0 升級文檔》進行調整。
    以上就是此次更新的詳細內容。從 v2.0 用 3D 渲染器重寫、v2.1 開放 3D 能力至今,Cocos Creator 缺失的 3D 能力已經在迭代中逐步補齊。我們希望能夠幫助中小團隊開發出驚艷的 3D 休閑項目,并且保留 Creator 做為 2D 引擎輕量高效的優勢,這是現階段 Cocos Creator 和 Cocos Creator 3D 的主要區別。與此同時,與 3D 引擎更多模塊的統一,也是 2D 和 3D 兩個產品線完全融合的開始。在不久的將來,Cocos Creator 將會整合兩個引擎的優點,提供卓越的 2D/3D 游戲開發體驗。

    2020.03.05

    V2.3.1

    發布時間: 2020.03.05

    Improvements

    • 適配微信 PC 版小游戲?#8710,使用方法詳見文檔
    • 進一步優化小游戲與 Web 平臺上的引擎包體大小
    • 完善 API 文檔與?creator.d.ts?聲明
    • 增加 TiledMap Object 圖層 Top-Down 和 Manual 渲染順序和水平垂直翻轉的支持(感謝@大城小胖3#6157
    • 支持使用 Backspace 按鍵刪除場景中的節點
    • 鎖定內置資源,避免誤操作
    • 禁用原生非 JS 線程中的?evalString?調用,避免 V8 崩潰

    Editor

    • 修復升級到 2.3 后無法使用 npm 模塊的問題
    • 修復升級到 2.3 后 VS Code 無法斷點的問題
    • 修復升級到 2.3 后可能導致腳本循環依賴,出現 "TypeError: Object prototype may only be an Object or null" 報錯的問題
    • 修復在 Windows 平臺僅構建腳本時,插件路徑可能錯誤的問題(感謝 shengyong)
    • 修復部分模型導入后節點顯示不全的問題(感謝 C_Tsang)
    • 修復 Spine 二進制文件在微信小游戲上無法上傳的問題
    • 修復構建時小米生成到默認路徑的簽名證書會被刪除的問題

    Engine

    • [Core] 優化動態創建 Label 節點時的初始化過程 #6173
    • [Core] 修復動態修改 Prefab 中的材質將導致其它相同材質也被改變的問題 #6201
    • [Core] 修復高頻次重復設置 zIndex 可能導致的渲染層級問題(感謝@大城小胖3) #6227
    • [Core] 修復 Canvas 組件勾選 fitWidth 后 EditBox 輸入框錯位的問題 #6233
    • [Core] 修復 RichText 在 active 為 false 的狀態下修改內容,排版錯誤的問題 #6231
    • [Core] 修復 3D 粒子第一次 Burst 的顯示數量不正確的問題 #6269
    • [原生] 修復在事件回調中銷毀 Mask 導致的報錯 #6186
    • [原生] 修復材質切換 Technique 無效的問題(感謝 inkfood.com) #2501
    • [原生] 修復窗口大小改變后獲取到的寬高不正確的問題 #249
    • [原生] 修復窗口大小改變后 Widget 未更新的問題 #62241
    • [原生] 修復 JS 原生調試無法使用 Performance 和 Profiler 的問題 #21861
    • [原生] 修復 Editbox 點擊軟鍵盤收起三角,沒有觸發編輯完成事件的問題
    • [原生] 修復游戲 restart 時的內存泄漏問題 #2215
    • [原生] 修復 Android 音頻模塊在進入后臺后會阻止設備進入省電模式的問題 #2137
    • [原生] 修復 Android 分屏時的窗口自適應問題 #2142
    • [原生] 修復 Windows 平臺 restart 之后窗口大小錯誤的問題 #2129
    • [HTML] 修復 safari 從后臺回到游戲時音頻不能播放的問題 #6198
    • [小游戲] 修復 Audio 沒有被 destroy 的問題 #62213

    KNOWN ISSUES

    • 目前在 v2.3.1 中導入 Cocos Studio 項目時會出現報錯,此問題將在 v2.3.2 版本修復。開發者如有需要的話可以臨時先在舊版本編輯器中導入項目,然后再升級到 2.3.1 版本進行使用。

    升級提示

    Cocos Creator 對項目的升級操作是不可逆的,請在升級前提交或備份舊版項目。絕大多數項目通常都能自動升級,但因為項目難免存在特殊性,開發者應該根據項目自身需求,提前對新版本引擎進行試用和評估。此外,出于穩定性考慮,建議即將上線或已上線的項目謹慎升級。以下是升級說明,如果開發者們在升級中遇到困難,歡迎向我們反饋,我們會盡力協助。

    從 < 2.3.0 版本升級

    如果預覽時出現加載警告 “Can not find module.module for path…”:

    這個警告可能是因為升級到 2.3 后,對腳本 import/require 的路徑大小寫檢測變嚴格了。在舊版本中,如果路徑的大小寫和實際文件不符,可能會有潛在的一些錯誤隱患,但不一定會表現出來。我們建議遇到這個問題的項目對相應大小寫進行修正。

    從 2.3.0 開始,定制安卓原生工程時,需注意 Android 與 Android Instant 使用了同一個構建模板:

    • 如果是 Android 平臺單獨使用的代碼請放入 app/src 目錄, 單獨使用的第三方庫請放入 app/libs 目錄。
    • 如果是 Android Instant 單獨使用的代碼和第三方庫請分別放入 game/srcgame/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.0 項目升級無此問題)

    從 < 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.NodePool 管理節點,則不受影響。

    從 < 2.0 版本升級

    打開 1.x 項目的話,場景等所有資源將會自動升級,代碼如有警告或報錯,可參考《1.10.0 資源升級指南》2《2.0.0 升級文檔》1進行調整。

    2020.02.16

    V2.3.0

    發布時間: 2020.02.16

    經過長時間的開發和準備,又度過了這個令人記憶深刻的春節,Cocos Creator 2.3 終于正式發布啦。2.3 是一個很重要的版本,正式整合了 3D 物理、碰撞和 3D 粒子的支持,能夠勝任更多品類的 3D 游戲開發!同時材質系統也從實驗版升級到了正式版本,可以大幅提升游戲的表現力。建議所有版本的開發者升級,升級之前請根據項目情況進行必要的技術評估和版本備份!

    支持發布到趣頭條小游戲

    Cocos Creator 2.3 正式支持了發布到趣頭條小游戲這個全新平臺!由于 Creator 為開發者抹平了平臺之間的差異,開發者發布到趣頭條小游戲就和發布到其余平臺一樣輕松。關于平臺接入的詳細步驟,請查閱《發布到趣頭條小游戲》。

    支持 3D 物理系統

    和 Cocos Creator 3D 一樣,Creator 的物理引擎基于 cannon.js 實現,并為用戶提供了高效的組件化工作流程和便捷的使用方法。目前支持了剛體、Box/Sphere 碰撞組件、觸發和碰撞事件、物理材質、射線檢測等特性。詳細說明請參考文檔。

    支持 3D 碰撞系統

    和 Cocos Creator 3D 一樣,Creator 提供了輕量的碰撞檢測系統 Builtin。Builtin 是僅有碰撞檢測系統的物理模塊,相對于其它的物理引擎,它沒有復雜的物理模擬計算,這將使得游戲的包體更小并且性能更佳。詳細說明請參考文檔。

    支持 3D 粒子系統

    3D 粒子的實現基本與 Cocos Creator 3D 一致,功能強大,支持在編輯器中調試預覽。

    目前提供了包括 Shape、Color、Velocity、Size、序列幀、拖尾等數十個模塊選擇,可以組合出各類粒子效果。

    目前提供了 Constant、Curve、Two Constant、Two Curve、Gradient 等多種參數的設置方式。

    詳細說明請參考文檔。

    升級材質系統到正式版

    Creator 的材質系統最初是在 2.1.1 加入的,但是一直在編輯器中被標記為實驗性功能,也缺乏相關文檔。經過一段時間的迭代,這次終于升級到了正式版!這個版本的 Effect 編譯語法和 Cocos Creator 3D 保持一致,可以使用 VS Code 的 Cocos Effect 插件進行編寫,只是內置的一些 shader 變量名字有些區別。之前在舊版 Creator 中對材質進行過定制的開發者們,可以根據文檔嘗試升級到正式版,如果有遇到困難可以在論壇發帖求助。

    新版材質系統的特性如下:

    • 支持修改材質時在場景中實時預覽修改的結果
    • 支持材質變種和 Effect 變種,對 2D 游戲更加友好
    • 支持材質包含多 Technique
    • 支持設置材質的 Technique, Pass, Property 名稱

    詳細說明請參考文檔

    支持 Spine 與 DragonBones 掛載節點

    在播放骨骼動畫時,開發者常常需要在骨骼動畫的某個部位上掛載節點,以實現節點與動畫聯動的效果。在 Creator 2.3 中只需要很簡單的操作,就可以將任意節點掛載到骨骼動畫,節點會跟隨動畫進行變換,用于實現掛點效果,也可以在節點上添加碰撞組件來實現碰撞檢測!詳細說明請參考文檔。

    支持 Spine 二進制資源格式

    在 2.3 中,我們把 Spine 運行庫升級到了 3.8,支持了導入 Spine 的 skel 二進制格式。skel 格式的用法和原先的 JSON 格式一致,但是文件體積更小,加載更快!

    支持構建時只重新編譯腳本

    在構建面板中,如果之前已經成功構建過項目,第二次構建時就可以勾選”只構建腳本”。勾選后的構建將復用上一次構建好的引擎和資源,只對腳本進行重新編譯,將會極大方便調試!這是一個在社區中呼聲很高的特性,非常感謝大家的建議。

    場景編輯器添加了 3D 查看選項

    其它重要特性

    • 屬性檢查器支持資源的多選批量設置
    • 支持切換單點與多點觸控,使用 cc.macro.ENABLE_MULTI_TOUCH 宏進行設置 #5847
    • Label 組件在使用 ttf 或系統字體時支持粗體、斜體以及下劃線設置
    • RichText 新增 <img> 的垂直對齊屬性 align 和偏移屬性 offset,詳見文檔(感謝 RazgrizHsu#6017

    Engine Fixes

    • 優化節點設置 zIndex 時的性能 #5899
    • 減小微信、百度、小米、支付寶小游戲平臺的包體大小 100KB
    • 移除動態合圖的最小尺寸限制,盡可能減少 DrawCall #5944
    • 優化原生加載圖片的性能(感謝 wbenlong)#2035
    • 加載子包的 API loadSubpackage 支持傳入進度回調 #15
    • RichText 支持設置 Label 的緩存模式,可減少 DrawCall、優化性能
    • 優化 Label 的 OverFlow 設置為 SHRINK 時的性能 #5914
    • Toggle 通過腳本修改 isChecked 狀態,2.3 新建項目將不觸發事件,舊項目行為不變
    • 支持 Spine 部件貼圖拆分,增強換裝功能 #5711
    • 引擎代碼支持使用 TypeScript 編寫
    • 優化骨骼動畫私有緩存模式 #6133

    Editor Fixes

    • 場景編輯器支持使用 F 快捷鍵聚焦節點
    • 動畫編輯器添加 Backspace 快捷鍵用于刪除動畫幀
    • 完善節點多選批量設置,增加多選添加組件功能

    Engine

    • 修復 3D 物體的陰影渲染錯誤問題 #5940
    • 修復節點銷毀時無法強制注銷所有監聽事件的問題(感謝 ssyyhm) #5985
    • 修復 cc.game.once 多次觸發的問題 #6055
    • 修復調用 getBoundingBoxToWorld 之后導致節點矩陣不正確的問題 #6108
    • 修復 Label 使用 BMFont 時無法動態合批的問題 #5860
    • 修復 Label 節點 Overflow 為 NONE 時,同時使用 Widget 組件會導致性能低下的問題 #5908
    • 修復 RichText 使用描邊時的內存泄露
    • 修復紋理壓縮導致 TiledMap 地表層渲染錯誤的問題 #5999
    • 修復 TiledMap 地圖為非對稱形狀時,包圍盒計算不正確的問題 #5916
    • 修復 TiledMap 的 API getPositionAt 返回值不正確的問題 #5880
    • 修復 Mask 嵌套時,點擊事件穿透的問題 #5749
    • 修復 ScrollView 旋轉后,檢測滾動方向錯誤的問題 #6102
    • 修復通過滾輪滾動 ScrollView 無法觸發 scroll-end 事件的問題 #5814
    • 修復 PageView 在超出邊界時進行快速二次拖動,會導致頁面跳轉錯亂的問題 #6015
    • 修復 PageView Indicator 顯示錯誤的問題 #6123
    • 修復粒子系統圖片被拉伸為正方形的問題 #5897
    • 修復粒子文件解析 positionType 錯誤的問題 #5946
    • 修復 Graphic 中途畫的點與起點重合后,后面畫的點都會自動 close 的問題(感謝 chocol)#6002
    • 修復 WheelJoint 組件設置 Frequency 報錯的問題 #6000
    • 修復當 Camera 的 Align With Screen 為 false 時,orthoHeight 計算錯誤的問題 #6139
    • 修復 VideoPlayer 展示本地視頻時,設置 Keep Aspect Ratio 無效的問題 #6138

    Native

    • 修復頻繁創建 3D 模型導致崩潰的問題 #2056
    • 修復加載圖片失敗后沒有回調的問題 #2077
    • 修復加載同名的遠程音頻時,會使用本地緩存的問題 #219
    • 修復 Spine、DragonBones、粒子切換父節點后合批失效的問題 #1993
    • 修復 Camera 渲染多個 Stage 報錯的問題 #1897
    • 修復 Spine setAttachment 接口無效的問題 #1992
    • 修復 EditBox 輸入表情崩潰的問題 #2021
    • 修復 TiledMap 動態加載時渲染異常的問題 #229
    • 修復 iOS 平臺與 Mac 平臺的文本排版跟 Web 不一致的問題 #1960
    • 修復 iOS 在雙擊 home 鍵游戲沒有暫停的問題 #1947
    • 修復 iOS 從后臺切換前臺 glContext 沒切換導致崩潰的問題 #2083
    • 修復 Android Instant 構建時文件沒有更新的問題 #2067
    • 修復 WebSocket 在 Android 64機型上崩潰的問題 #2074

    Mini Game

    • 修復場景延時加載時,VideoPlayer 無法播放的問題 #72
    • 修復 EditBox 長度設置為負值時無效的問題 #60
    • 修復微信上加載音頻無響應的問題 #52
    • 修復微信上使用卡通材質渲染錯誤的問題 #6008
    • 修復微信小游戲 VideoPlayer 播放時,隱藏視頻沒有暫停播放的問題 #82
    • 修復 vivo 平臺上 languageCode 未定義的問題

    Web

    • 修復瀏覽器自動旋轉后,Widget 沒有正確適配的問題 #6061
    • 修復 UC 瀏覽器全屏下無法用手指縮放的問題 #5863
    • 修復 IE 瀏覽器上 VideoPlayer 在退出全屏后位置錯誤的問題 #5827
    • 修復 QQ 瀏覽器獲取鼠標位置不對的問題 #5604
    • 修復 Safari 瀏覽器在滾動后,觸摸事件錯誤的問題 #5907
    • 修復 Safari 存在導航欄時顯示錯誤的問題 #5926

    Editor

    • 修復動畫編輯器切換同名節點時動畫錯誤的問題
    • 修復動畫編輯狀態下切換至游戲預覽面板,預覽面板無法顯示的問題
    • 修復矩形變化工具設置中心點計算錯誤的問題
    • 修復設置 Canvas 的 resolution 屬性,場景中未能即時更新的問題
    • 修復場景編輯器的 Canvas 線框會被其他節點遮擋的問題
    • 修復無法使用鍵盤切換節點的問題
    • 修復切換至沒有動畫組件的節點,動畫編輯器顯示錯誤的問題
    • 修復 Color Picker 無法保存顏色預設值的問題
    • 修復切換項目后運行,模擬器分辨率沒有切換的問題
    • 修復使用命令行構建失敗的問題
    • 修復原生平臺剔除 Audio 模塊無法構建的問題
    • 修復自動圖集沒有紋理時,構建失敗的問題
    • 修復拷貝工程后,構建失敗的問題
    • 修復 Effect 文件名稱使用數字開頭報錯的問題
    • 修復多開編輯器,切換編輯器出現閃屏的問題
    • 修復 TypeScript import 失敗的問題
    • 修復編輯器安裝在中文路徑時,編輯器無法打開的問題
    • 修復導入模型失敗的問題
    • 修復 Windows 上構建小米游戲新建證書失敗的問題 
    • 修復增加碰撞體組件后無法拖拽節點的問題
    • 修復紋理只有三通道時,選擇使用 pvrtc-4bits-rgb-seprate-a 壓縮紋理引起的圖片失真
    • 修復網頁預覽時 ShowFPS 按鈕狀態未保存的問題

    BREAKING CHANGE

    • cc.Mat4.translate 方法不再支持旋轉變換,僅支持純位移變換,如需支持旋轉請使用 cc.Mat4.transform 代替。

    KNOWN ISSUE

    • 直接 require node_modules 的寫法在 2.3.0 暫時不可用,下個版本將會修復。目前建議對外部庫單獨編譯并使用插件腳本導入。

    DEPRECATION

    • 從 v2.2.0 開始,我們不再建議您使用節點的 Skew 功能。Skew 通常用作在 2D 引擎中模擬 3D 效果,隨著 Cocos Creator 對 3D 節點的深入支持,Skew 效果已經完全可以由 3D 節點來實現。所以為了統一使用體驗,進一步優化引擎底層實現,我們廢棄了 Skew 屬性。不過我們依舊會保留一段時間內的向下兼容,開發者可在舊項目中延續原有做法。后續我們將進一步完善兼容方式和升級案例,擇機正式移除 Skew 功能。

    升級提示

    Cocos Creator 對項目的升級操作是不可逆的,請在升級前提交或備份舊版項目。開發中的項目通??蔁o縫升級,但因為項目難免存在特殊性,開發者應該根據項目自身需求,進行新版本引擎進行技術評估。如果開發者們在升級中遇到困難,歡迎向我們反饋,我們會盡力協助。此外,出于穩定性考慮,建議即將上線或已上線的項目謹慎升級。

    從 < 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.0 - 2.3.0 版本升級
    從 2.3.0 開始,Canvas 組件不再負責將 Canvas 節點尺寸設為屏幕大小,此行為將結合 Widget 組件實現。為保證兼容性,2.0 項目升級后,Canvas 所在節點會自動添加 Widget 組件。(從 1.0 項目升級無此問題)

    從 < 2.2.0 版本升級
    從 2.2.0 開始,我們強化了內存管理機制,現在要求用戶通過代碼動態創建且獨立于場景節點樹的 cc.Node 必須通過 destroy() 釋放,否則引擎無法知道何時回收這類節點的內存,會導致內存泄露。
    此外,手動從場景中移除的節點,在不需要用到的時候也需要統一 destroy。如果通過 cc.NodePool 管理節點,則不受影響。

    // 假設 testNode 是場景中的某個節點,若之前被手動移出場景了,如testNode.parent = null;
    // 或者
    testNode.removeFromParent(true);
    // 或者
    parentNode.removeChild(testNode);
    // 若往后 testNode 還會再次用到,則無需手動 destroy 該節點
    // 否則應該手動調用
    testNode.destroy();

    從 < 2.0 版本升級
    打開 1.x 項目的話,場景等所有資源將會自動升級,代碼如有警告或報錯,可參考《1.10.0 資源升級指南》《2.0.0 升級文檔》進行調整。

    2019.12.27

    V2.2.2

    發布時間: 2019.12.27

    此次更新的 2.2.2 版本旨在修復缺陷和提升產品穩定性,建議所有 2.2.1 版本的開發者升級。

    改動列表

    • 修復原生平臺上 Spine、DragonBones、粒子系統可能內存泄露的問題 #5905
    • 修復 RichText 使用 Outline 時可能內存泄露的問題 #5906
    • 修復微信小游戲同時加載多個音頻可能無法結束的問題 #57
    • 修復微信小游戲從后臺切回來后 calculateDeltaTime 可能會死循環的問題 #e222465

    版本預告

    Cocos Creator 2.3 正在論壇火熱公測中,此版本帶來了一系列的新特性,特別是 3D 粒子、3D 物理的支持,歡迎嘗鮮。

    2019.12.04

    V2.2.1

    發布時間: 2019.12.04

    v2.2.1 在 v2.2.0 的基礎上進行了大量的體驗優化和缺陷修復,更全面地優化了性能,同時加入了支付寶小游戲的支持。建議所有版本的開發者升級,升級之前請根據項目情況進行必要的技術評估和版本備份!

    支持支付寶小游戲

    隨著小游戲的發展,小游戲領域也越來越被更多廠商所重視,而新的平臺也意味著新的機遇。作為國內的電商巨頭,支付寶近期開放了小游戲的支持,Creator 也在第一時間進行了適配,并在 v2.1.4 整合了發布到支付寶小游戲的能力。目前 Cocos Creator 2.2.1 也同步支持了支付寶小游戲,使用說明請參考《發布到支付寶小游戲》。

    支持微信小游戲引擎插件

    游戲引擎插件是微信 7.0.7 版本新增的一項功能,能極大減少游戲的下載時間。對于這個重大利好,Cocos 在第一時間就發布了對應的編輯器插件,提供了對 Creator 老版本的有力支持。目前此功能也正式合并到了 v2.2.1 中,使用起來會更加便捷。開發者們只需在 構建發布 面板中,勾選“允許分離引擎”,然后正常構建發布即可,無需其它人工操作。詳見《微信小游戲引擎插件使用說明》。

    Camera 組件增強

    • 新增了 Align With Screen 屬性,勾選后攝像機不論處于 2D/3D 節點模式,都會將視窗大小自動保持為整個屏幕的大小。取消勾選的話,開發者可以自由設置 Ortho Size(2D/3D)或者 FOV(3D)。
    • 在 2D 模式下也提供了和 3D 模式相同的 Rect 屬性,用于指定攝像機繪制在屏幕上的哪個區域,便于實現類似小地圖那樣的 Viewport。

    Improvements

    • 優化原生平臺上調用 addChild 時的性能,提升場景切換速度
    • 支持自動釋放運行時的 JSON 資源包,優化內存占用
    • TiledMap 支持 TileSet 包含多貼圖格式
    • 優化原生 DragonBones 和 Spine 顏色更新性能(感謝 wyf)
    • 在 cc.director 中增加獲取游戲運行總時間的 API getTotalTime()
    • 支持構建小米快游戲時啟用 md5Cache 功能
    • 適配 iOS 13 瀏覽器對重力感應權限的請求操作
    • 適配 iPadOS 13 的平臺檢測(感謝 krapnikkk)#5635
    • 命令行構建增加 --force 參數用于跳過項目升級提示
    • 優化原生上的 VideoPlayer 和 WebView 的內存釋放時機 #215
    • 支持在原生上開啟 WebSocket 服務器 #1921
    • 完善場景文件中的 TRS 浮點數存儲精度,提升用戶體驗
    • 完善編輯器下 Label 和 RichText 設置字體時的操作體驗
    • 完善資源面板的文件夾排序

    Editor Fixes

    • 修復保存設置后,切換項目后設置被還原的問題
    • 修復構建微信小游戲時,對應平臺的壓縮紋理設置不生效的問題
    • 修復重置編輯器布局后,重命名文件失敗的問題
    • 修復 Sprite Editor 未能正確顯示旋轉后的 plist 文件的問題
    • 修復節點 highlight 時層級管理器不會自動定位的問題
    • 修復 3D 點光源添加到 5 個以上,編輯器報錯的問題
    • 修復插件商店無法打開的問題
    • 修復資源導出時的報錯
    • 修復構建原生平臺時朝向可能設置錯誤的問題
    • 修復自定義構建流程時 md5 重命名在 finish-build 事件之后觸發的問題
    • 修復某些情況下造成 Prefab 循環引用,導致參數丟失的問題
    • 修復游戲預覽無法完全顯示場景內容的問題
    • 修復刪除紋理壓縮格式后,資源應用按鈕沒有激活的問題
    • 修復從 v2.1.x 升級到 v2.2,旋轉角度可能出錯問題
    • 修復升級到 v2.2 后 Mask 的 Image Stencil 效果可能不對的問題

    Engine Fixes

    • 修復 v2.2.0 節點 Skew 無效的問題
    • 修復子節點 group 與父節點 group 同步的問題 #5723
    • 修復自定義材質實例化之后屬性無法設置成功的問題(感謝 Elk953) #5615
    • 修復在 QtWebview 上 ArrayBuffer.isView 未定義導致的報錯 #5611
    • 修復低端設備上可能不支持高精度 highp 導致的錯誤 #5675
    • 修復了某些平臺上游戲第一幀 deltaTime 可能為負值的問題 #5641
    • 修復 Sprite 組件 Type 選擇 Filled,Filled Type 選擇 Radial,修改 filledRange 時表現異常的問題 #5609
    • 修復 Label 組件在 CHAR 模式下,Vertical Align 設為 Top 或 Bottom 時的對齊問題 #5614
    • 修復 EditBox 在 editing-did-began 回調里無法設置 editBox.string 的問題 #5732
    • 修復 Button 組件在 Transition 為 Scale 時,設置節點 scale 無效的問題 #5740
    • 修復粒子系統勾選 Auto Remove On Finish 后,未勾選 Play On Load 時的播放問題 #5618 #1905
    • 修復粒子系統播放后第一幀可能爆裂的問題 #1915
    • 修復使用系統字體時,Font Family 為空導致的渲染問題 #5627
    • 修復當 Spine 還未加載,用戶調用 cache 相關接口會報錯的問題 #5628
    • 修復 TiledMap Object Group 紋理坐標不正確的問題 #5633
    • 修復 TiledMap 45 度角 Object Group 圖片位置不正確的問題 #5728
    • 修復 TiledMap 在同一幀插入刪除再插入用戶節點,會報組件已存在的問題 #5633
    • 修復 TiledMap 圖像圖層層級錯誤的問題 #5587
    • 修復 TiledMap setTiledTileAt() 接口無效的問題 #5713
    • 修復 VideoPlayer 在 show all 布局下豎屏顯示的問題#5684
    • 修復當播放其他 video 時,VideoPlayer 組件寬高無法及時更新的問題 #5736
    • 修復在 once 事件回調時執行 off 方法報錯的問題 #5626
    • 修復 ttf 延遲加載的問題 #5612
    • 修復重復加載場景報錯之后可能導致場景無法加載的問題 #5656
    • 修復手動先釋放資源,再移除節點造成紋理丟失的問題 #5588
    • 修復 cc.rotateTo 在部分情況下無效的問題 #5717
    • 修復 cc.rotateBy 在部分情況下無效的問題 #5742

    Native

    • 修復 Mask 某些情況下失效的問題 #1899
    • 修復粒子系統顏色透明度過渡不正確的問題 #1910
    • 修復 Camera 勾選渲染多個 stage 時渲染錯誤問題 #1897
    • 修復陀螺儀無法關閉的問題 #197
    • 修復切換前后臺時 audioEngine 可能導致崩潰的問題 #1930
    • 修復 jsb.Downloader 注冊回調報錯的問題 #1940
    • 修復斷點續傳下載失敗的問題(感謝 gaolizheng)#1931
    • 修復 TiledMap 多貼圖的情況下,顯示不正確的問題 #190
    • 修復 DragonBones 緩存模式事件未觸發的問題 #196
    • 修復 Spine 在 Cache 模式下事件回調與 Web 平臺參數不一致的問題 #209
    • 修復 Spine 在 Cache 模式下,使用裁剪動畫,且裁剪造成頂點數量增加時,可能導致緩沖區溢出的問題 #1948
    • 修復當節點 scale 不為 1 時,EditBox、WebView、VideoPlayer 顯示位置出現偏移的問題 #201
    • 修復 EditBox 輸入時切換場景導致卡住的問題 #5804
    • 修復 VideoPlayer 報錯的問題 #1934
    • 修復 VideoPlayer 更換 url 之后,會自動切全屏的問題 #205
    • 修復 videoPlayer.resume() 調用無效的問題 #199
    • 修復 WebView 的 evaluateJS() 無效的問題 #207
    • 修復加載 plist 顯示的粒子效果不正確的問題 #193
    • 修復剔除 Motion Streak 模塊會報錯的問題 #198
    • 修復使用 Graphics 組件進行多次繪制之后,已經填充的線條會被自動清除的問題 #198
    • 修復桌面端屏幕 resize 之后,屏幕適配的問題 #1891
    • 修復 Mac 上截屏顯示錯誤的問題 #1900
    • 修復 Windows 下 3D 模型可能顯示錯誤的問題 #1927
    • 修復 iOS 和 Android 上屏幕旋轉失效的問題 #1891
    • 修復 iOS 鎖屏后解鎖可能導致卡住的問題 #1918
    • 修復 iOS 上 WebView 加載網頁無效的問題 #1940
    • 修復 Android EditBox 彈出時會將 view 往上推的問題 #1946
    • 修復 Android 上下載時 onProgress 傳入參數錯誤問題 #1919

    Mini Game

    • 修復 EditBox 在拉起狀態下重復調用 showKeyboard 的問題 #26
    • 修復當節點 scale 不為 1 時,VideoPlayer 顯示位置出現偏移的問題 #27
    • 修復部分小游戲平臺 cc.sys.os 沒定義的問題 #30
    • 修復 vivo OPPO 上 Label 頂部被截斷的問題 #5799
    • 修復支付寶上音頻播放之后重新播放的問題 #29
    • 修復支付寶上加載資源的報錯 #38
    • 修復支付寶 iOS 上的音頻加載失敗的問題 #30
    • 修復微信 iOS 9 上加載引擎的報錯 #5780
    • 修復微信上預加載失敗后沒有回調的問題 #22
    • 修復微信上 XHR.abort() 調用失敗的問題 #20
    • 修復小游戲子包中的圖片啟用壓縮紋理時,無法正常構建子包的問題
    • 修復小游戲子域中 BMFont 的渲染重疊及使用 Cache mode 的報錯問題 #5763

    DEPRECATION

    • 從 v2.2.0 開始,我們不再建議您使用節點的 Skew 功能。Skew 通常用作在 2D 引擎中模擬 3D 效果,隨著 Cocos Creator 對 3D 節點的深入支持,Skew 效果已經完全可以由 3D 節點來實現。所以為了統一使用體驗,進一步優化引擎底層實現,我們廢棄了 Skew 屬性。不過我們依舊會保留一段時間內的向下兼容,開發者可在舊項目中延續原有做法。后續我們將進一步完善兼容方式和升級案例,擇機正式移除 Skew 功能。

    KNOWN ISSUES

    • 由于 FBX SDK 的兼容性問題,請確保 Windows 版本的編輯器安裝在英文路徑下,否則可能會無法打開編輯器。此問題將在后續版本修復。
    • 目前在構建原生平臺時,不能剔除 Audio 模塊,否則將無法正常編譯。
    • 目前 Mask 組件嵌套時,可能造成點擊事件穿透。如需嵌套 Mask 請參考#5749 對引擎進行定制。
    • 目前粒子系統會按照正方形來渲染紋理,如果使用的紋理不是正方形則會被拉伸。請盡量使用正方形紋理,并自定義 SpriteFrame 的 trim 區域,避免空白區域被剔除?;蛘邊⒖?nbsp;#5666 對引擎進行定制。
    • 目前使用 Graphics 繪制的頂點數量超過 65535 之后,將無法進行繪制,如有需要參考 #206 和 #1935 對引擎進行定制。

    升級說明

    • 打開 1.x 項目的話,場景等所有資源將會自動升級,代碼如有警告或報錯,可參考《1.10.0 資源升級指南》《2.0.0 升級文檔》進行調整。
    • 2.0 以上項目可直接無縫升級。
    • 從 2.2.0 開始,我們強化了內存管理機制,現在要求用戶通過代碼動態創建且獨立于場景節點樹的 cc.Node 必須通過 destroy() 釋放,否則引擎無法知道何時回收這類節點的內存,會導致內存泄露。
    • 此外,手動從場景中移除的節點,在不需要用到的時候也需要統一 destroy。如果通過 cc.NodePool 管理節點,則不受影響:

    // 假設 testNode 是場景中的某個節點,若之前被手動移出場景了,如
    testNode.parent = null;
    // 或者
    testNode.removeFromParent(true);
    // 或者
    parentNode.removeChild(testNode);
    // 若往后 testNode 還會再次用到,則無需手動 destroy 該節點
    // 否則應該手動調用
    testNode.destroy();

    2019.11.11

    V2.1.4

    發布時間: 2019.11.11

    為了讓你的游戲在每一個平臺上都表現出色,Cocos Creator 每一天都在努力發展中。此次發布的 2.1.4 在 2.1.3 的基礎上增加了支付寶小游戲的支持,歡迎大家抓住時機,搶先體驗!

    支持支付寶小游戲

    Cocos Creator 正式支持發布到支付寶小游戲這個全新平臺。由于 Cocos Creator 為開發者抹平了平臺之間的引擎差異,開發者發布到支付寶小游戲就和發布到其余平臺一樣輕松。關于平臺接入的詳細步驟,請查閱《發布到支付寶小游戲》。據悉,目前支付寶小游戲的各項平臺能力正在陸續開放中,同時也對產品的合作持開放態度,大家可以提前準備,迎接新的機遇。

    其它改動(相對 2.1.3)

    • 修復禁用的 Label 節點可能引起 Prefab 無法在編輯器中回退的問題 [#5460]
    • 修復 iPad 更新到 iPadOS 13.1.1+ 后 Safari 瀏覽器的 UA 信息識別問題(感謝 krapnikkk)[#5636]

    版本預告

    Cocos Creator 2.2.1 正在論壇火熱公測中,歡迎體驗。此版本也將集成支付寶小游戲的發布支持,并且繼續提升原生平臺的執行效率,優化場景切換、對象排序時的運行表現。正式版將于不久發布,敬請期待。

    2019.10.18

    V2.2.0

    發布時間: 2019.10.18

    為了讓你的游戲在每一個平臺上都表現出色,Cocos Creator 每一天都在努力發展。此次更新的 v2.2 版本在大幅提升了原生平臺性能的同時,也是 Cocos Creator 第一次在原生性能上超越 Cocos2d-lua 的里程碑版本!v2.2 包含了大量的功能增強和體驗改進,歡迎所有版本的開發者升級感受。

    大幅提升原生平臺渲染性能

    在此版本中,我們對渲染引擎進行了大幅度升級,在原生平臺上實現了巨大的性能提升,不僅完勝了所有 Cocos Creator 過往版本,更超越了 Cocos2d-JS 和性能一貫優異的 Cocos2d-lua。因此 2.2 版本的 Cocos Creator,已經能夠在原生平臺上滿足所有 Cocos 新老開發者的性能需求。

    在這次的性能測試中,我們選取了 Android 和 iOS 兩款比較有代表性的低端機型 OPPO A57 和 iPhone 6S Plus,以便貼近真實使用場景,因為通常高端機型的性能問題都不大。我們對比測試了 Cocos Creator 2.2.0、Cocos Creator 1.9.3,還有最傳統和有代表性的 Cocos2d-JS 3.17.1 及 Cocos2d-lua 3.17.1。測試結果表明:

    • 在 Android 原生上,Cocos Creator 2.2.0 的性能是 Cocos2d-lua 和 1.9.3 版本的 1.5 - 1.7 倍。
    • 在 iOS 原生上,Cocos Creator 2.2.0 的性能和 Cocos2d-lua 齊平,是 1.9.3 版本的 3 - 4 倍。

    此外,2.2 版本在 iOS 不但幀率獲得提升,GC 時的卡頓也大大減輕,實際體驗將更加流暢。

    下面是詳細性能數據:

    支持 3D 模型渲染合批

    此版本加入了對 3D 模型的渲染合批的支持,該特性能有效降低 3D 游戲的 Drawcall。要啟用此特性,你只需在 Mesh Renderer 上勾選 enableAutoBatch 屬性,引擎便會根據所用材質,以及 Mesh 的頂點格式、Primitive Type 自動進行合批。為了獲得更好的優化效果,建議你只對那些可以被合批并且頂點數量較少的模型啟用此選項。

    支持 PVR 壓縮紋理的 alpha 通道分離

    我們在此版本中新增了 PVR 壓縮紋理的 alpha 通道分離格式(RGB+A)。
    該格式使用類似 etc1 的處理方式對紋理的透明通道進行分離和壓縮,壓縮后紋理高度將會是原圖的兩倍,因此能避免常規的 PVR RGBA 格式畫質很低的問題。

    支持自定義瀏覽器預覽模板

    允許用戶采用類似自定義構建模板的方式對瀏覽器預覽所用的網頁進行定制,支持 html、jade、ejs 三種網頁格式,詳見《網頁預覽定制工作流程》。

    支持環境光設置

    我們在 Light 組件中新增了環境光(ambient)類型設置,用于對 3D 場景進行基礎照明,常用于解決模型背光面全黑的問題。只需要在節點創建菜單中選擇“Create Light → Ambient”即可。也可以在節點上添加 Light 組件,并且設置 type 為 AMBIENT 進行創建。

    進一步提升 Spine 和 DragonBones 的性能

    在 2.2.0 版本中,我們再次優化了 2D 骨骼動畫在各個平臺上的性能。

    • 在原生平臺上,我們為 Spine 和 DragonBones 補齊了 SHARED_CACHE 和 PRIVATE_CACHE 這兩種加速模式的支持。啟用加速模式后,Android 平臺 Spine 性能是原先的 2 倍,DragonBones 性能是原先的 7 倍。iOS 平臺 Spine 性能是原先的 3 倍,DragonBones 是原先的 5 倍。
    • 在 Web 平臺上啟用加速模式后,Android Spine 性能是原先的 3 倍,DragonBones 性能是原先的 4 倍。iOS Spine 性能是原先的 1.25 倍,DragonBones 性能是原先的 1.39 倍。

    下面是詳細數據:

    原生加速模式性能測試結果
    原生加速模式內存測試結果
    Web 加速模式性能測試結果

    要啟用加速模式,只需要在 Spine 或 DragonBones 組件上設置 Animation Cache Mode 為 SHARED_CACHE 或 PRIVATE_CACHE 即可。關于加速模式的更詳細信息,可參考文檔中的屬性說明。

    升級 Spine 運行庫到 3.7

    大幅增強 TiledMap支持

    2.2 進一步完善了 TiledMap 的支持?,F在可支持 grid 旋轉、grid 動畫、圖象圖層、圖層偏移、object group 文本,支持單個圖層多個 tileset。還支持在場景中添加子節點,并與地圖產生遮擋關系。并且修復了單個地圖頂點超過 65535 后渲染錯誤的問題。文檔詳見《TiledMap 組件參考》,使用案例詳見引擎自帶范例中的 ShieldNode。

    屬性檢查器標簽支持寬度調節

    我們為屬性檢查器加入了寬度調整功能,用以解決在某些組件上屬性名顯示不全的問題?,F在用戶無需大幅調整整個面板的尺寸,只需要拖動屬性名右側的分割線就可以自由調節分割比例。

    Improvements

    • 優化編輯器及各面板的啟動速度
    • 避免每次微信小游戲構建時都會覆蓋目標工程中的配置文件的操作,以便保留用戶的自定義配置
    • 將 SpriteFrame 資源面板和 Sprite Editor 中的九宮格(border)屬性從 trim(裁剪)后的邊距改為原圖邊距。使其和美術作圖時給出的數據一致,對舊項目數據沒有影響
    • 構建過程中自動對其它小游戲平臺的開放域組件進行剔除,用戶無需在模塊設置里手動配置
    • 構建面板中的原生平臺包名將根據不同平臺分開存放
    • 升級編輯器所用的 Electron 到 5.0.8,V8 到 7.3,node.js 到 12.0.0
    • 優化 Spine 啟用加速模式后的初始化卡頓問題
    • 正式在 iOS 平臺支持 etc2 壓縮紋理
    • 在 iOS 平臺默認啟用 OpenGLES3
    • 適配 macOS Catalina

    Editor Fixes

    • 修復退出 Prefab 編輯模式后,預覽時無法獲取場景名的問題
    • 修復退出 Prefab 編輯模式后,場景編輯器中的 3D 節點可能會顯示錯亂的問題
    • 修復在動畫編輯狀態下刪除了正在編輯的動畫剪輯,動畫編輯器將會報錯的問題

    Engine Fixes

    • 修復使用 once 監聽的事件無法用 off 注銷的問題
    • 修復 cc.systemEvent 監聽 once 事件無效的問題(感謝 Zty)
    • 修復 DragonBones 和 Spine 的貼圖不支持場景資源延遲加載的問題[#4299]
    • 修復部分 DragonBones 動畫播放不正確的問題
    • 修復使用裝飾器聲明 CCClass 時,類型設置為 JavaScript 的原生 Number 、 String 等類型時不會提示警告的問題
    • 修復聲明 CCClass 時,將默認值直接指定為 cc.String 、 cc.Boolean  等類型時默認值不對的問題

    Native

    • 修復原生平臺上暫停音樂后,從后臺切回前臺,音樂還會繼續播放的問題 [#141] [#1875]
    • 修復 Android 連續播放多個 Audio 實例后,隨機出現部分聲音沒有的問題 [#1869]
    • 修復原生平臺延遲加載的 Audio,播放后無法停止的問題 [#180]
    • 修復 iOS 或 Mac 原生平臺重新加載 Font 時,可能會引起內存泄露的問題 [#1761]
    • 修復 iOS 13 深色模式導致 EditBox 白色字體看不到的問題 [#1866]

    Web

    • 修復 IE11 中 VideoPlayer 無法全屏的問題 [#4875]

    Mini Game

    • 修復 AudioSource 的 playOnload 可能無效的問題
    • 避免 iOS 上百度小游戲切場景的過程中可能會黑屏的問題

    REMOVED

    • 移除了構建 Windows 平臺的 VisualStudio 2015 支持,統一使用 2017。

    BREAKING CHANGES

    • 將 cc.winSize 由 cc.Vec2 類型調整為 cc.Size 

    KNOWN ISSUES

    • 2.2.0 版本暫時不支持節點的 Skew 效果,我們會在后續提供文檔引導大家手動開啟 Skew 的支持。新項目建議直接使用 3D Sprite 而不是 Skew。舊項目可以先參考 [#5564] [#1889] 對 js 和原生引擎進行適配,即可支持 Skew。
    • 發布到 Windows/Mac 之后,屏幕如果發生 resize 將會有適配問題,目前暫時需要手動參考 [#1891] 對引擎進行適配。
    • 部分舊項目參考了論壇的方案,在 iOS 和 Android 上實現了屏幕旋轉,該方案在 v2.2.0 上暫時失效。目前手動參考 [#1891] 對引擎進行適配就可解決。
    • 在 Mac 平臺的部分機器上會出現 Label 在 CHAR 模式下文字偶現白色邊框的情況,該問題影響面很小,會在 2.2.1 修復。更多后續版本計劃,可以參考 Roadmap 。
    • 在 onLoad 過程中手動 disable Label 組件將會引起報錯,目前可以暫時這樣繞過:將隱藏 Label 的操作由 label.enabled = false 替換為 label.node.active = false 或者 label.node.opacity = 0

    升級說明

    • 打開 1.x 項目的話,場景等所有資源將會自動升級,代碼如有警告或報錯,可參考《1.10.0 資源升級指南》《2.0.0 升級文檔》進行調整。
    • 2.0、2.1 項目可直接無縫升級。
    • 從 2.2 開始,我們強化了內存管理機制,現在要求用戶通過代碼動態創建且獨立于場景節點樹的 cc.Node 必須通過 destroy() 釋放,否則引擎無法知道何時回收這類節點的內存,會導致內存泄露。

    此外,手動從場景中移除的節點,在不需要用到的時候也需要統一 destroy。如果通過 cc.NodePool 管理節點,則不受影響。

    // 假設 testNode 是場景中的某個節點,若之前被手動移出場景了,如
    testNode.parent = null;
    // 或者
    testNode.removeFromParent(true);
    // 或者
    parentNode.removeChild(testNode);
    // 若往后 testNode 還會再次用到,則無需手動 destroy 該節點
    // 否則應該手動調用
    testNode.destroy();

    2019.09.20

    V2.1.3

    發布時間: 2019.09.20

    自從 Cocos Creator 2.1.0 發布以來,經過了半年的更新迭代,版本已經趨于穩定,目前 2.1 的新增用戶已經占據主流。因此我們計劃減少 2.0 版本的后續維護力度,將分散的精力集中投入到后續發展中,力爭將 Cocos Creator 打造成更加專注、開放、健康的開源平臺。
    本次更新的 v2.1.3 版本,旨在優化體驗和修復缺陷,建議所有開發中的 v2.0、v2.1 項目升級。詳細的改動說明如下:

    支持 iOS 13

    為了支持即將發布的 iOS 13 操作系統,我們將 iOS 原生平臺上的 VideoPlayer 底層實現由 MPMoviePlayerController 替換為了 AVPlayerContoller[#1831],同時將WebView 底層由 UIWebView 替換為了 WKWebView[#1837]。

    支持 vivo 小游戲分包加載

    隨著小游戲的玩法越來越豐富,開發者對于擴大包大小的需求越來越強烈,所以 vivo 小游戲提供了分包加載這一個功能。 所謂的分包加載,即把游戲內容按一定規則拆分為幾個包,在首次啟動時先下載必要的包,這個必要的包我們稱為「主包」,開發者可以在主包內觸發其它分包的下載,從而把首次啟動的下載耗時分散到游戲運行中。詳細說明請參考[分包加載]

    Improvements

    • 為組件的 onLoadstartupdatelateUpdate函數添加容錯,更好地應對用戶腳本拋出的異常[#4941]
    • 在編輯器中預覽粒子時,將同步播放當前節點下的子節點中的粒子,方便美術查看效果
    • 完善拖動資源到場景中進行創建的行為
    • 在屬性檢查器中添加圖片是否可以動態合圖的選項 Packable,用于解決自定義 shader 獲取不到原始 UV 的問題,詳見《Texture:packable》。
    • 允許在資源編輯器中雙擊打開 json 資源
    • 導入 plist 圖集時默認將貼圖類型設為 RAW
    • 在屬性檢查器中增加 Vec4 類型支持
    • 改善部分 creator.d.ts類型提示
    • 優化 Label的 SHRINK 動態布局,同時支持了 CHAR 模式 [#5223]
    • 避免多次調用 Texture2D.update時的性能開銷 [#5198]
    • 在 Android上將 V8升級到了 7.5
    • VideoPlayer適配到了微信小游戲

    Editor Fixes

    • 修復從 v2.0 升級上來后,AnimationClip 中的旋轉數據會丟失的問題
    • 修復從 v2.0 升級上來后,場景和 Prefab 中的節點在特定角度下的旋轉值會丟失的問題
    • 修復某些機器上打開項目一直停在“正在導入資源,請稍候”界面的問題
    • 修復項目構建后壓縮紋理可能會缺失的問題(感謝 xu.lidong)
    • 修復壓縮紋理配置 Quality 為 100,打包無法輸出圖片文件的問題
    • 修復腳本移動或重命名后可能會報錯的問題
    • 修復動畫編輯器設置節點 z 值無效的問題
    • 優化了 動畫編輯器在組件、資源等狀態發生變化時的錯誤處理
    • 修復場景編輯器中 gizmo 位置不對的問題
    • 修復節點旋轉無法 undo 的問題
    • 修復屬性檢查器設置 Camera的 Rect 無效的問題 [#5294]
    • 修復某些情況下場景或 Prefab 數據出錯后,場景無法正常打開的問題
    • 修復 RichText 或 Label 組件在編輯器中填入的文本被自動換行后,有可會在行首生成一個空格的問題
    • 修復層級管理器和資源管理器合并到同一個面板時,內容顯示不全的問題

    Engine Fixes

    • 修復場景延遲加載資源會導致 3D 模型無法顯示的問題 [#5071]
    • 修復某些 3D骨骼動畫渲染不全的問題 [#5248]
    • 修復動態合圖在特定情況下會導致紋理邊緣像素異常的問題(感謝 unace)[#5242]
    • 修復 Animation的“stop”和“lastframe”在特定情況下不觸發的問題 [#5246]
    • 修復加載帶有 WebView的場景,在場景切換后的首幀會屏幕會閃一下的問題 [#5106]
    • 修復 Label文本置空之后仍會顯示的問題 [#5266][#5284]
    • 修復帶 LabelOutline組件時,Label的 Overflow 設為 SHRINK 或CLAMP,CacheMode 設為 CHAR 的時候,節點的尺寸不正確的問題[#5145]
    • 修復 RichText文本自動換行后可能會丟失空格符的問題 [#5116]
    • 修復 Sprite組件不支持 MESH模式的問題 [#5195]
    • 修復 ScrollView、PageView啟用慣性回彈(elastic)后可能在滑動超出邊界后無法回彈的問題 [#4894]
    • 修復 ScrollView的 ScrollBar 異常顯示的問題 [#5249]
    • 修復 Layoutscale 小于 1 的時候效果不對的問題 [#5074]
    • 修復 PhysicsCollider組件所在節點在運行時修改 node 的 group 屬性可能會報錯的問題(感謝 HengHuH)[#4949]
    • 修復引擎內置資源有可能被用戶誤釋放的問題 [#4915]
    • 修復大量渲染節點增刪時可能導致內存泄露的問題 [#5025]
    • 修復調用 node 的 targetOff 方法可能無效的問題 [#5052]
    • 修復同時播放的 audio實例超過 32 后,audio 實例有可能被錯誤銷毀的問題 [#5097]
    • 修復粒子在 Free 模式下坐標計算錯誤的問題 [#5320]

    Native

    • 修復原生平臺上的 Label內存泄露問題 [#1783][#1786]
    • 修復在Android 部分機型上,EditBox 字體默認為白色的問題 [#1778]
    • 修復在 Mac和 Windows上,當 EditBox處于輸入狀態字符重疊的問題 [#146]
    • 修復 iOS上 EditBox輸入 emoji 時可能會導致崩潰的問題 [#1798]
    • 修復原生平臺上 Canvas 適配模式為 SHOW_ALL 時,EditBox輸入框位置異常的問題 [#162]
    • 修復 Android上在通知中心顯示時鎖屏,音頻不會暫停的問題 [#1788]
    • 修復 Android上屏幕亮屏時,程序如果在后臺仍會播放音頻的問題 [#1785]
    • 修復原生平臺從后臺切前臺會自動播放已暫停音頻的問題 [#145]
    • 修復在原生平臺上修改 Spine/DragonBones材質時,節點位置出錯的問題 [#148]
    • 修復在原生平臺上 Spine/DragonBones 的 opacity第一幀不正確的問題 [#148]
    • 修復 VideoPlayer在 iOS上全屏后無法返回的問題 [#1800]
    • 修復 VideoPlayer在 Android上播放時鎖屏再進入會卡死的問題 [#1811]
    • 修復 cc.sys.languageCode在 Android 上無法獲取完整語言地區碼的問題 [#1784]
    • 修復在 Mac平臺,插件腳本初始化時調用 cc.game.setFrameRate()失敗的問題 [#5261]

    Web

    • 完善對 IE11 的支持 [#5033]
    • 修復在 Edge 瀏覽器上點擊 EditBox的清除按鈕(瀏覽器自帶的),不會觸發 input 事件的問題 [#5088]
    • 修復 EditBox在輸入過程中文本大小未能隨 Node 進行縮放的問題 [#5088]
    • 修復 Edge 和百度瀏覽器上不能播放音頻的問題 [#4910]
    • 修復桌面端 Chrome 和 Safari 上音頻可能無法播放的問題 [#4991]
    • 修復桌面端 UC 瀏覽器播放 WebAudio會報錯的問題 [#5048]
    • 修復游戲運行于 Crosswalk時 音頻調用 setTargetAtTime產生的報錯 [#5281]

    Mini Game

    • 修復小游戲開放域中的圖集不支持旋轉的問題 [#4325]
    • 修復在 OPPO、vivo、華為、即刻玩平臺上文本下方可能被裁剪掉的問題[#5303]
    • 升級了小米快游戲構建程序,修復了找不到 pem 資源的問題[#22]

    DEPRECATIONS

    • 廢棄了 Node上的 convertToWorldSpace函數,請改用 convertToWorldSpaceAR
    • 廢棄了 Node上的 convertToNodeSpace函數,請改用 convertToNodeSpaceAR
    • 完善攝像機的坐標轉換 API
      • getCameraToWorldPoint改為 getScreenToWorldPoint并且支持 3D Camera
      • getWorldToCameraPoint改為 getWorldToScreenPoint并且支持 3D Camera
      • getCameraToWorldMatrix改為 getScreenToWorldMatrix2D,只支持 2D Camera
      • getWorldToCameraMatrix改為 getWorldToScreenMatrix2D,只支持 2D Camera

    BREAKING CHANGES

    • 標準化小米快游戲重力感應返回的數值,和其它平臺的返回值保持一致。此版本返回的值相比舊版本將會除以 10。
    • 移除了 Texture2D上的 setMipmap接口,請改為直接設置 genMipmaps屬性
    2019.07.17

    V2.1.2

    發布時間: 2019.07.17

    自從 Cocos Creator 2.1.0 發布以來,經過了半年的更新迭代,版本已經趨于穩定,目前 2.1 的新增用戶已經占據主流。因此我們計劃減少 2.0 版本的后續維護力度,將分散的精力集中投入到后續發展中,力爭將 Cocos Creator 打造成更加專注、開放、健康的開源平臺。
    本次更新的 v2.1.2版本,不僅包含了常規的體驗優化和缺陷修復,還著重優化了純 2D項目的包體,以及自動圖集的生成尺寸,建議所有 v2.0 開發者升級。同時,該版本也合并了 v2.0.10 的所有改動,支持了小米快游戲即刻玩小游戲這兩個全新平臺。詳細的改動說明如下:

    優化 2D 項目包體

    根據之前公開的說明,為了加快迭代速度,我們一直將 v2.1 定位為一個 3D 先行版,所以 v2.1 對純 2D 項目的照顧是有滯后的。這一點主要體現在對 3D 新增的模塊切割得不夠干凈,導致純 2D 項目的包中也會加入一些些沒用到的代碼片段。這并不符合我們的產品理念,所以我們之前還不建議 v2.0 項目全面升級。
    此次發布的 v2.1.2 經過細致優化,順利解決了這個包體問題?,F在我們正式推薦所有 v2.0 項目升級到 v2.1.2,從 v2.0 升級上來的項目將默認剔除3D 模塊,確保不會對 2D 項目的包體、性能產生影響。如需增加 3D 支持請手動在"菜單 → 項目 → 項目設置 → 模塊設置"中勾選 3D 模塊。

    支持小米快游戲

    Cocos Creator 正式支持發布到小米快游戲,詳細用法請查閱《發布到小米快游戲》。

    支持即刻玩小游戲

    Cocos Creator 正式支持發布到即刻玩小游戲,詳細用法請查閱《發布到即刻玩小游戲》。

    完善微信小游戲資源加載流程

    • 修復資源可能無法加載成功的問題(感謝 snow_storm 的反饋)[#97]
    • 優化緩存失敗時的處理邏輯[#98]
    • 修復遠程圖片多次加載失敗后后續加載資源無回調的問題[#96]
    • 避免超大 json 文件解析時引發的崩潰問題(感謝 canghai7789 的反饋)[#101]
    • 調整緩存間隔,降低對游戲幀率的影響[#97]

    Editor Fixes

    • 完善自動圖集算法,現在無需手動調節 max size 即可生成尺寸最小的圖集
    • 完善 Windows 平臺對多顯示器的支持,現在編輯器啟動時會自動檢測窗口可見性,確保窗口能正常顯示
    • 增加項目升級或降級前的警告信息,防止用戶誤操作
    • 在自帶的范例工程中新增了 DragonBones 和 Spine 的換裝 demo[#725]
    • 優化了編輯器對 GPU 設備的兼容性,減少因 WebGL 兼容性導致的誤報
    • 改進了 Asset Watcher 機制,如果組件的某個 accessor(getset)的類型定義為資源數組,則當相應資源發生改變時,將會觸發 setter 對整個數組進行重新設置

    Engine Fixes

    • 微信小游戲上默認關閉 preserveDrawingBuffer,解決了游戲從后臺切到前臺會卡頓幾秒的問題[#4537]。(微信小游戲最初發布時必須啟用preserveDrawingBuffer,否則場景切換會黑屏)
    • 改善了 Label 原生平臺上的定位準確性[#4765][#1764]
    • 優化 BMFont渲染時的內存占用[#4651]
    • 允許 Label設為 BITMAP 模式后對文本再次進行修改(不過仍然不建議這么做,會造成額外的內存和性能開銷)
    • 將 Web平臺的 ttf字體加載失敗后的超時時間從 60s 縮短為 3s[#4536]
    • 在 Asset 上新增 url屬性用于獲取當前資源的實際 url,開發者可直接調用平臺的原生 API 來使用這些 url[#4536]

    Bug Fixes

    Editor

    • 修復構建項目時有可能出現“Cannotconvert undefined or null to object” 報錯的問題
    • 修復導入 plist 圖集時,部分 Sprite 的 offset 會被取整導致的渲染問題
    • 修復 circle collider 的 gizmo 相關問題
    • 修復 VideoPlayer 和 WebView 在編輯器中顯示不正確的問題
    • 修復渲染組件無法保存自定義材質的問題[#4390]
    • 修復使用命令行編譯腳本時的報錯
    • 修復動畫編輯模式下,場景編輯器不顯示動畫軌跡的問題
    • 修復第三方插件 reload 后,插件自帶的 runtime-resource 無法在資源管理器中顯示的問題
    • 修復自動圖集中的圖片后綴名為大寫的 PNG 時項目可能構建失敗的問題

    Engine

    • 修復輸入事件響應在個別情況下層級錯誤的問題[#4522]
    • 修復 3D節點的 z 設置無效的問題[#4408]
    • 修復 3DGPU 骨骼數量未能正確判斷,導致某些情況下模型可能不顯示的問題[#4772]
    • 修復釋放遠程圖片釋放失敗的問題[#4536]
    • 修復 v2.1.1 出現的 Spine和 DragonBones渲染合批失效的問題[#4645]
    • 修復 Spine使用了 clipping 后出現的渲染問題[#4744]
    • 修復 Label使用 BITMAP 模式時,動態合圖不生效的問題[#4393]
    • 修復 Label使用 CHAR 模式時,Label Outline 會發生裁剪的問題[#4550][#4807][#4809]
    • 修復 PageView動態添加頁面時,滑動位置計算錯誤的問題[#4556]
    • 修復 cc.tween的值為 0 時可能無效果的問題[#4790]
    • 修復射線檢測返回的距離會受節點縮放影響的問題[#4562]
    • 修復重新開始游戲時,內建資源會被清空的問題[#4509]
    • 修復項目從 2.0 或更早的版本直接升級上來后,Rotate 相關的 Action 朝向會發生錯誤的問題
    • 修復原生平臺 Label渲染性能下降的問題[#1765][#143]
    • 修復原生平臺上如果先渲染骨骼少的 3D模型再渲染骨骼多的模型會渲染錯誤的問題[#4473]
    • 修復原生平臺執行 cc.game.end()之后如果仍有資源在后臺下載將會引起崩潰的問題[#1763]
    • 修復原生平臺上 Spine資源頻繁加載、卸載引發的崩潰問題[#1758]
    • 修復原生平臺子包內的腳本不會加密為 jsc 文件的問題
    • 修復 Windows平臺 Label文字大小不一致的問題[#1766]
    • 修復 2.1 版本后在某些瀏覽器上會報的 WebGL 兼容性錯誤的問題[#4394]
    • 修復 Web平臺 EditBox遮擋其他 UI 控件觸摸事件的問題(把默認的 stayOnTop 改為 unStayOnTop)[#4705]
    • 修復 Web移動端上 EditBox收起軟鍵盤時,多次適配 Canvas 尺寸的問題[#4705]
    • 修復 Web平臺 EditBox多行輸入時 placeholder 顯示不正確的問題[#4705]
    • 修復 WebAudio設置音量可能不會立即生效的問題[#4767]
    • 修復 IE 11的兼容性問題[#4659][#4701]
    • 修復 iOS 微信瀏覽器上 EditBox收起軟鍵盤后觸摸區域錯位的問題[#4705]
    • 修復 Facebook Live SDK 邏輯異常的問題
    • 修復微信小游戲在 iOS 上音頻可能無法重新播放的問題[#102][#107]
    • 修復微信小游戲上背景音樂無法停止的問題[#4793]
    • 修復微信小游戲接聽電話之后,音頻不再繼續播放的問題[#4757]
    • 修復微信小游戲開放域中不支持 Button Gray Effect 導致的報錯[#4474]
    • 修復微信小游戲開放域中不支持 WebGL 導致的報錯[#4748]
    • 修復 2.1.1 版本中調用微信小游戲subContextView.update()無法更新開放域貼圖的問題[#4721]

    從 v2.0.0 用 3D 渲染器重寫底層至今,Cocos Creator 經過多個版本的穩步迭代,終于進化成了一款能無損兼顧純 2D 和 3D 兩種項目類型的游戲引擎。將來 Cocos Creator 仍會秉承“2D 優先”的理念,繼續死磕 2D 游戲開發體驗及基礎性能,逐步引入那些適合融入 2D 游戲的 3D 特性,陪伴 2D 游戲團隊共同成長。
    值得一提的是,近期發布的 Cocos Creator 3D Beta,是一套獨立于 Cocos Creator 2.1 的全新產品線,和目前 2.1 新增的 3D 功能在定位上有明顯區別。Cocos Creator 3D 融合了 Cocos 在 3D 領域多年來的探索和積累,立足于 3D 次世代引擎的長遠發展,會更加適用于對 3D 表現力有高級需求的 3D 開發團隊。

    2019.05.28

    V2.0.10

    發布時間: 2019.05.28

    本次發布的 2.0.10 重點提升了原生平臺的穩定性,修復了 Spine、DragonBones 和 Label 等相關問題,建議所有 2.0 用戶進行升級。此外,2.0.10 還支持發布到小米快游戲即刻玩小游戲這兩個全新平臺,為開發者們帶來了新的機遇。良好的品質離不開細心的打磨,非常感謝各位開發者通過社區、GitHub、Cocos 企業服務等渠道反饋的意見。
    以下是相對于 2.0.9 的改動說明:

    支持小米快游戲

    Cocos Creator 正式支持發布到小米快游戲,詳細用法請查閱《發布到小米快游戲》。

    支持即刻玩小游戲

    Cocos Creator 正式支持發布到即刻玩小游戲,詳細用法請查閱《發布到即刻玩小游戲》。

    Editor Fixes

    • 優化超大項目的構建速度
    • 完善資源 uuid 沖突時的錯誤處理
    • 移除構建發布時,自動圖集為空時的警告,允許自動圖集為空
    • 在構建面板中添加了 iOS 和 Mac 平臺的包名選項

    Engine Fixes

    • 優化節點的 zIndex刷新性能 [#4060]
    • 新增 Spine 和 DragonBones 的全局 timeScale 選項,可通過 API sp.timeScale 和 dragonBones.timeScale 進行設置
    • 優化 Spine 和 DragonBones 在加速模式下的初始化速度
    • 在 DragonBones 的 ArmatureDisplay 上新增 getArmatureKey 方法,用于作為換裝時的索引 [#4100]
    • 添加 MotionStreak 的 BlendFactor 支持
    • 原生平臺默認啟用 cc.macro.CLEANUP_IMAGE_CACHE 標記,以減少紋理內存占用
    • 優化原生平臺 Spine 的內存占用
    • 優化小游戲開放域的性能
    • 小游戲開放域組件 SubContextView 上新增 fps 屬性,用于控制開放域刷新頻率,默認 60
    • 可通過 disable 小游戲開放域組件 SubContextView 來禁用開放域的主循環,減少性能開銷,詳見《WXSubContextView 技巧》
    • 提升微信小游戲的資源加載速度
    • 修復導入全透明圖片時,引擎有可能出現 Rect width exceeds maximum margin 的報錯

    Bug Fixes

    Editor

    • 修復構建 OPPO、vivo、華為小游戲時可能會將腳本加密為 JSC 導致構建失敗的問題
    • 修復 Windows 下 Android Studio SDK 路徑會報錯的問題
    • 修復構建 Mac 平臺時使用 link 模板會編譯報錯的問題
    • 修復超大項目在 Windows 平臺構建可能報錯的問題(當資源數 > 10 萬)
    • 修復自動圖集構建時可能多導出未使用到的 SpriteFrame 或 SpriteAtlas 資源的問題
    • 修復自動圖集構建時的警告信息可能有誤的問題
    • 修復粒子系統啟用 Custom 模式后無法在編輯器中預覽的問題
    • 修復導入 BMFont 時如果字體名稱帶有括號將會報錯的問題
    • 修復反復進入 Prefab 編輯模式時會出現的 object already destroyed 警告
    • 修復從帶有 DragonBones 或 Particle 的場景進入 Prefab 編輯模式時,再回到場景會報錯的問題 
    • 修復刪除 TiledLayer 節點,再 Undo,會報材質為空的問題
    • 修復批量導出多份資源時數據會有殘留的問題
    • 修復層級管理器中鎖定父節點后,子節點仍然可以在場景中選中的問題
    • 修復場景中沒有節點的時候,無法拖動資源到層級管理器的問題
    • 修復資源管理器中重命名文件操作可能無效的問題
    • 修復動畫編輯器播放動畫結束后,手動跳一幀再點播放就會出錯的問題
    • 修復配置文件損壞時無法打開項目的問題
    • 修復自定義引擎不存在時無法創建新項目的問題

    Engine

    • 修復 DragonBones 父骨骼透明度沒有與子骨骼透明度級聯的問題 [#4068][#1704]
    • 修復 DragonBones 在進行換皮操作后,原先的動畫監聽失效的問題
    • 修復 Spine、DragonBones 啟用預乘時,修改節點透明度,出現“曝光“現象的問題 [#4068][#1704]
    • 修復遠程加載 DragonBones 或 Spine 資源時,手動創建的 Asset 會報錯的問題 [#4020][#122]
    • 修復 Spine、DragonBones 在 SHARED_CACHE 模式下的緩存更新問題 [#4457]
    • 修復 Spine 在 Cached 模式下,addAnimation 的 delay 參數沒有默認值的問題
    • 修復 Spine 在 Cached 模式下,設置 skeletonData 會有警告的問題
    • 修復 Spine 在 Cached 模式下,換裝時動畫可能異常的問題 [#4488]
    • 修復 Spine 的 json 文件沒有 skeleton 字段時會報錯的問題 [#4029]
    • 修復 Spine 使用多皮膚,在極速模式下不顯示的問題 [#4091]
    • 修復 AudioSource 第二次播放時,獲取的 state 狀態錯誤的問題 [#3974]
    • 修復紋理無法動態設置 mipmap 的問題 [#4201]
    • 修復 Label 啟用 CHAR mode 時文字定位可能錯亂的問題 [#4007]
    • 修復 Label 啟用 BITMAP mode 后,動態合圖不起作用的問題 [#4392]
    • 修復 Label 渲染的文本過多時離屏 Canvas 尺寸可能過大的問題 [#4047]
    • 修復 Label 所在節點的 opacity 設置超過 255 后顯示異常的問題 [#4161]
    • 修復 Label 使用 shrink mode 時可能無法渲染 BMFont 的問題 [#4099]
    • 修復 LabelOutline 組件銷毀時可能引發內存泄露的問題 [#4220]
    • 修復 LabelOutline 組件級聯時透明度異常的問題 [#4495]
    • 修復 ScrollView 或 Mask 所在節點 Scale 為 0 時,平級節點可能無法響應點擊的問題 [#4456]
    • 修復 PageView 的頁面動態更新時,滾動位置不對的問題 [#4050]
    • 修復粒子系統的粒子數量過多時可能導致的內存泄露問題 [#4256][#4262]
    • 修復粒子系統播放完后,隱藏再顯示可能會出現殘留粒子的問題 [#4243]
    • 修復 Scale 為 0 的節點在 Prefab 中 Instantiate 三次以上會導致 Scale 數值變成為 1 的問題 [#4454]
    • 修復原生平臺資源下載、XMLHttpRequest、WebSocket、SocketIO 請求結束后有可能崩潰的問題 [#1721][#1716]
    • 修復原生平臺 GC 可能導致崩潰的問題 [#1744]
    • 避免原生平臺初始化過程中如果在原生代碼中調用 evalString 導致的崩潰
    • 修復原生平臺 Label 顯示可能會有黑邊的問題 [#130]
    • 修復原生平臺 Spine 資源獲取或解析失敗時會引起崩潰的問題 [#1745]
    • 修復原生平臺 Spine 未完全加載時就銷毀可能導致的崩潰問題 [#1711]
    • 修復原生平臺 DragonBones 設置 slot 的 displayIndex 屬性沒有作用的問題 [#4339]
    • 修復 iOS12 無法加載正確的 ttf 文件的問題 [#1700]
    • 修復 iOS 釋放 AudioClip 時可能會崩潰的問題 [#1714]
    • 修復 Android 原生平臺無法正確加載子包的問題 [#1701]
    • 修復 AndroidEditBox 在 number inputType 下不支持輸入小數點等符號的問題 [#1695]
    • 修復 Android Instant 平臺加載 Spine 資源報錯的問題 [#3999]
    • 修復 Windows 平臺前后臺切換時可能報錯的問題
    • 修復 Web 平臺 VideoPlayer 設置 currentTime 無效的問題 [#4049]
    • 修復 Web 平臺 VideoPlayer 監聽 ready-to-play 事件無效的問題 [#4049]
    • 修復微信小游戲在安卓平臺上音頻重新播放時無法重頭開始的問題 [#92]
    • 修復百度小游戲 saveFile 導致 tempFilePath 失效的問題 [#14]
    2019.04.30

    V2.1.1

    發布時間: 2019.04.30

    自從 Cocos Creator 2.1.0 發布以來,我們收到了來自用戶大量的寶貴建議。根據之前公布的計劃,我們會持續加快對 v2.1 系列的迭代,以便盡快消化用戶們的建議。同時為了防止這些改動影響到老項目的穩定性,我們僅推薦有 3D 需求的項目升級到 v2.1,其它項目可以繼續使用 v2.0,等到 v2.2 發布后再同時升級上來。本次 v2.1.1 的升級主要支持了 3D 場景編輯、攝像機預覽光照系統,同時也合并了最新 2.0.x 的有關改動。

    支持 3D 場景編輯

    場景編輯器允許一鍵切換至 3D 編輯模式,方便對 3D 對象、攝像機、燈光進行編輯。詳見文檔《3D 場景》。

    新增游戲預覽面板

    新增了獨立的預覽面板,能夠在場景編輯的過程中直觀地預覽攝像機看到的畫面。面板打開方式:主菜單 → 面板 → 游戲預覽,預覽面板可置于獨立窗口,也可拖進編輯器主窗口。

    新增 3D 光照和陰影

    新增了 Light 組件,用于在場景中布置光源,還可結合MeshRenderer 設置陰影效果。詳見文檔《光源組件參考》。

    升級 EditBox 組件

    現在用戶可以單獨設置 Text Label、Placeholder Label 和 Background 節點,變得更加靈活和簡單,也更符合組件化的開發方式。詳見文檔《EditBox 組件參考》。

    新增文字陰影渲染組件

    新增了 LabelShadow 組件,用于給 Label 組件添加陰影效果,和 LabelOutline 用法類似。詳見文檔《Label 組件參考》。

    支持動態創建 3D Primitive 模型

    添加了 cc.primitive模塊,用于在運行時動態創建 3D 模型,如 box、cone、cylinder、plane 等。詳見文檔《基礎 3D 物體》。

    集成材質系統(Beta)

    加入了材質系統的支持,允許用戶創建 Material 和 Effect(Shader)資源類型。需注意的是,目前的材質系統主要是提供給引擎內部使用,僅供開發者預覽。我們計劃在 2.1.2 就對材質系統進行大幅度升級,屆時此版本的材質將無法升級到 2.1.2。

    Editor Fixes

    • 新增快捷鍵 Ctrl/Cmd + Shift + F,用于將當前選中節點對齊到場景編輯器所在視角。
    • 在場景編輯器中點選時,允許同時按住 Ctrl/Cmd進行多選
    • 完善針對自定義引擎的容錯處理,避免編輯器啟動失敗
    • 提升資源管理器在超大工程下的搜索性能
    • 添加菜單“文件 - 在新窗口中打開項目”,用于支持在 Mac 上同時開啟多個工程
    • 當組件未定義 enabled相關聯的生命周期函數的時候,隱藏組件的 enabled勾選按鈕
    • 升級 TypeScript 版本到 3.3.3333

    Engine Fixes

    • 讓 cc.Vec3能夠兼容 cc.Vec2的相關 API
    • 改善了 Label在編輯器及不同瀏覽器上的定位準確性(感謝”大城小胖”提供建議)
    • 優化 3D骨骼動畫性能和體積
    • 原生平臺默認啟用 cc.macro.CLEANUP_IMAGE_CACHE標記,以減少紋理內存占用
    • 原生平臺自動校驗當前設備最大支持的紋理尺寸
    • 添加微信小游戲上 XMLHttpRequesttimeout 事件的支持[#87]
    • 新增 cc.sys.HUAWEI_GAME枚舉,用于判斷當前是否是華為快游戲平臺
    • 優化 Android5 系統的 WebView 兼容性
    • 當 VideoPlayer設為靜音時,允許 iOS 瀏覽器自動播放

    Bug Fixes

    Editor

    • 修復在 BuildResults.getNativeAssetPath 可能獲取不到貼圖路徑的問題
    • 修復移除動畫編輯器正在編輯的動畫幀導致的報錯
    • 修復反復進入 Prefab編輯模式時會出現的 object already destroyed 警告

    Engine

    • 修復當組件未定義 onEnable時 enabledInHierarchy始終為 false 的問題
    • 修復 ToggleGroup所在節點的 active 為 false 的時候未完全禁用的問題
    • 修復 Label的 opacity 未生效的問題
    • 修復 Slider的錨點設置會影響點擊的問題[#4163]
    • 修復粒子系統播放完后,隱藏節點再顯示會出現殘留粒子的問題[#4243]
    • 修復粒子系統的粒子數量過多時可能導致的內存泄露問題[#4256]
    • 修復原生平臺資源下載、XMLHttpRequest、WebSocket、SocketIO請求結束后有可能崩潰的問題[#1721][#1716]
    • 修復原生平臺上 XMLHttpRequest可能因為超時引發崩潰的問題[#1724]
    • 修復原生平臺在電信網絡下通過 IPV6 加載(微信頭像)文件可能失敗的問題[#1713]
    • 修復原生平臺 OpenGL 繪制報錯 #4017
    • 修復原生平臺 Label渲染系統文字時可能有黑邊的問題[#130]
    • 修正Android 平臺上音頻文件不在 OBB時無法加載的問題[#1611]
    • 修復 Android 平臺在引擎初始化完成之前收到 touch 事件可能引起崩潰的問題[#1715]
    • 修復 Windows平臺窗口從最小化還原時可能的報錯[#129]
    • 修復 Windows平臺關閉窗口時出現的報錯[#1732]
    • 修復在瀏覽器上音量設置為 0 無效的問題
    • 修復 3D項目不兼容微信小游戲開放數據域的問題
    • 修復 3D模型的骨骼穿透問題[#4188]

    REMOVED

    • 移除了 CoffeeScript 腳本的創建入口。CoffeeScript 腳本目前仍可以手動創建,我們計劃在 v3.0 移除對 CoffeeScript 的完整支持。

    后續版本計劃

    • 2.0.x
      • 持續優化性能和提升穩定性
      • 支持更多的小游戲平臺
    • 2.2.0
      • 優化自動圖集
      • 增強壓縮紋理支持
      • 進一步優化 EditBox 的平臺兼容性
      • 支持骨骼動畫資源延遲加載
      • 優化小游戲平臺構建流程
    • 2.3.0
      • 大幅優化原生平臺基礎渲染性能
      • 大幅優化 TiledMap 支持
    • 2.3.x
      • 支持 3D 物理系統和碰撞檢測
      • 將 2.1.1 添加的材質系統由實驗版升級為正式版
    2019.03.05

    V2.0.9

    發布時間: 2019.03.05

    本次發布的 2.0.9 版本新增了對 百度小游戲 平臺的支持,并且大幅優化了 Spine
    DragonBones 在小游戲和 Web 平臺上的性能,優化了微信小游戲的資源加載性能和動態文本刷新效率。同時,我們進一步完善了引擎和編輯器的兼容性、穩定性,讓大家能夠獲得更好的開發體驗。良好的品質離不開細心的打磨,非常感謝各位開發者通過社區、GitHub、Cocos 企業服務等渠道反饋的意見。 以下是相對于 2.0.8 的改動說明:

    支持發布到百度小游戲平臺

    Cocos Creator 正式支持了發布到百度小游戲,詳細用法請查閱 發布到百度小游戲平臺。

    提升 DragonBones 和 Spine 在非原生平臺上的性能

    之前 Cocos Creator 在 2.0.7 版本中,已經大幅優化過了 DragonBones 和 Spine 在原生平臺上的性能,優化后的性能甚至比 1.9、1.10 還快了平均一倍。而這次發布的 2.0.9,則又針對 Web、小游戲等非原生平臺,新增了SHARED_CACHE PRIVATE_CACHE 兩種加速模式,使 DragonBones 的性能提升了 15 倍,Spine 的性能提升 3 - 6 倍。  啟用加速模式后的性能測試結果:

    • 測試的分值根據幀率和動畫數量換算而來,值越高性能越好。

    在同屏播放三個以上的動畫時,SHARED_CACHE 加速模式還能大幅降低內存開銷,以下是同屏一百個動畫的內存對比:

    • 測試的分值越低表示內存占用越少。動畫越多 SHARED_CACHE 節省的內存就越多。

    要啟用極速模式,只需要在 DragonBones 或 Spine 組件上設置 Animation Cache Mode 為 SHARED_CACHE 或 PRIVATE_CACHE 即可。關于極速模式的更詳細信息,可參考文檔中的屬性說明。

    提升微信小游戲運行性能

    優化了微信小游戲的資源加載速度

    針對微信小游戲緩存資源耗時較長的問題,我們調整了資源緩存策略,將耗時較長的緩存操作自動延后(#72),縮短了資源加載所需的等待時間。

    大幅優化動態文本刷新性能

    微信小游戲 7.0.3 版本開始,底層 texImage2D調用耗時過長,導致 Label 渲染系統字體或 ttf 字體時,一旦文字內容發生改變就會影響性能。為此,我們在 Label 組件上新增了一個 Cache Mode 選項,該選項設為 CHAR 模式后,就能徹底解決這個性能問題。Cache Mode 可設置的值有:

    • NONE:默認值,Label 中的整段文本將生成一張位圖。 
    • BITMAP:選擇后,Label 中的整段文本仍將生成一張位圖,但是會盡量參與 動態合圖。
    • 只要滿足動態合圖的要求,就會和動態合圖中的其它 Sprite 或者 Label 合并 Draw Call。由于動態合圖會占用更多內存,該模式只能用于文本不常更新的 Label。
    • CHAR:選擇后,原理類似 BMFont,Label 將以“字”為單位將文本緩存到全局共享的位圖中,相同字體樣式和字號的每個字符將在全局共享一份緩存。能支持文本的頻繁修改,對性能和內存最友好。
    • 不過目前該模式還存在如下限制,我們將在后續的版本中進行優化:
    • 該模式只能用于字體樣式和字號固定,并且不會頻繁出現巨量未使用過的字符的 Label。這是為了節約緩存,因為全局共享的位圖尺寸為 2048*2048,只有場景切換時才會清除,一旦位圖被占滿后新出現的字符將無法渲染。
    • Overflow 不支持 SHRINK
    • 不能參與動態合圖(同樣啟用 CHAR 模式的多個 Label 在渲染順序不被打斷的情況下仍然能合并 Draw Call)

    其余需要注意的是:

    • Cache Mode 僅對系統字體或 ttf 字體有效,BMFont 字體無需進行這個優化。
    • Cache Mode 對所有平臺都有優化效果。
    • BITMAP 模式取代了原先的 Batch As Bitmap 選項,舊項目如啟用了 Batch As Bitmap 將自動遷移至該選項。

    預支持在微信小游戲子域啟用 WebGL

    微信小游戲已計劃在后續版本中支持開放數據域中的 WebGL 渲染模式,我們提前對其進行了適配。開發者無需做任何操作,當微信正式推出支持后,游戲就會自動在子域中啟用 WebGL,獲得更好的性能。不過需要注意的是,這會導致在目前版本的微信客戶端中運行時出現“[GameOpenDataContext] 子域只支持使用 2D 渲染模式”的報錯,該報錯是引擎檢測當前環境是否支持 WebGL 所產生的,不會影響到項目運行,請先無視。

    • 如果升級到 2.0.9 以后,相比微信 7.0.3 之前的版本,仍然有卡頓、掉幀的問題,建議嘗試隱藏或者縮小子域的區域,子域像素尺寸越低,性能越高。同時不建議游戲場景中包含常駐子域顯示(比如分數之類的信息),這對性能可能有顯著影響。

    支持發布為 Android App Bundle

    在構建面板的 Android 平臺下,新增了 App Bundle 選項,勾選后即可將 Android 原生游戲發布為 App Bundle。將 App Bundle 提交到 Google Play 后,Google Play 將會根據玩家手機參數的差異,動態下載不同版本的 APK,達到減少游戲的包體的目的。

    Editor Fixes

    • 在屬性檢查器中禁止設置節點寬高為負數
    • 在資源管理器中添加排序方式切換按鈕,可選擇按照名稱或類型進行排序
    • 添加層級管理器的搜索清空按鈕,清空后將跳轉到之前選中的節點
    • 在層級管理器的下拉搜索框中添加通過 UUID 查找資源被引用情況的功能
    • 同步層級管理器和動畫編輯器中的節點選中狀態
    • 將默認??吭趯傩詸z查器旁邊的服務面板移動到構建發布窗口中
    • 移除除了 Sprite 和 Particle 以外的其它渲染組件上的 Blend Factor 屬性
    • 完善粒子系統導入導出 plist 的支持
    • 構建項目時在系統任務欄中顯示進度條
    • 重復導入 CCB 和 Cocos Studio 工程時將會覆蓋原來的文件夾,不再保留多份
    • 構建微信小游戲時,默認關閉微信開發者工具的代碼混淆功能,采用 Creator 自帶的混淆功能

    Engine Fixes

    • 完善 Label動態字體的渲染效果,避免了文字邊緣可能帶有黑邊的問題
    • 升級 Spine運行庫到 3.6
    • 引入了全新的緩動 API:cc.tween,能提供更簡潔的語法和更高的靈活性,詳見 API - tween
    • 在 RigidBody組件上添加 Awake On Load 屬性,用來設置剛體是否默認喚醒
    • 原生平臺增加 jsb.copyTextToClipboardAPI,用于拷貝文本到剪貼板
    • 原生平臺的模塊裁剪不再剔除 XMLHttpRequest 模塊
    • 升級 Android 構建工具配置 Gradle至 4.10.3,plugin 至 3.2
    • 將 Android 最低的 Target/Compile SDK Version 從 16 升級至 23,Min SDK Version 仍然是 16
    • 在 Android 8 中默認支持 http 協議 #1664
    • 完善 VideoPlayer組件在 X5 瀏覽器上的支持
    • 取消 Chrome 69 以上版本中對動態圖集的屏蔽(之前會有白色殘影所以屏蔽了動態圖集)

    Bug Fixes

    Editor

    • 修復動畫編輯器無法使用在用戶腳本上的問題
    • 修復自動圖集不能打包到子包的問題
    • 修復命令行構建項目時,項目會直接生成到 build 目錄下的問題
    • 修復命令行構建項目時不加載自定義插件的問題
    • 修復命令行構建項目時 excludeScenes 參數不生效的問題
    • 修復場景編輯器中的網格背景會穿透到某些半透明圖片上方,導致顏色和運行時有一些差異的問題
    • 修復自動同步的 Prefab 在保存場景時個別情況下會提示無法保存引用的問題
    • 修復自定義構建插件在“build-finished”階段獲取 BuiltResults 中的子包資源時,資源所在的 nativePath 不正確的問題
    • 修復更改節點層級關系后 Physics Collider 的 Gizmo 顯示異常的問題
    • 修復自定義引擎時,項目構建可能出現的無效報錯
    • 調整代碼自動編譯策略,防止插件在修改項目腳本時導入失敗

    Engine

    • 修復場景顯示對象非常多時會出現渲染錯誤的問題
    • 修復 Button組件設置為 COLOR 模式后,所在節點顏色不生效的問題
    • 修復在 onLoad之前設置 Button 的 interactable為 false 會導致節點 scale 變為 0 的問題
    • 修復 Label組件未激活就銷毀時的報錯 #3769
    • 修復 Label在搭配 faceIn action 使用時可能會閃現的問題
    • 修復對 Particle應用 action 會導致粒子發生偏移的問題
    • 修復 Particle 組件會重復解析 plist 中內嵌的 textureData 的問題
    • 修復加載 1.x 舊項目時會丟失場景中的部分 Particle 自定義數據的問題
    • 修復 ScrollView的父節點 scale 為 0 時ScrollView 布局異常的問題
    • 修復 DragonBones如果包含聲音文件,播放動畫會報錯的問題
    • 修復 DragonBones骨骼包含多張紋理時,可能無法渲染的問題
    • 修復 DragonBones的緩存上限未生效,導致緩存不會自動清空的問題
    • 修復加載 1.x 舊項目時會丟失 Spine 的 premultipliedAlpha 設置的問題
    • 修復 Mask組件啟用 inverted后未更新點選檢測(hit test)的問題
    • 修復調整節點 zIndex后點選檢測(hit test)區域可能未刷新的問題 #3895
    • 修復不同 shader 使用同一個 uniform 名稱,但是類型不同時獲取數據不對的問題
    • 修復在微信小游戲子域中的某些場景中的字段會受到 MD5 干擾的問題
    • 修復原生平臺上 WebSocketGC 時的潛在崩潰問題 #1681
    • 修復原生平臺 Spine切換父節點后會導致閃退和渲染異常的問題 #1659
    • 修復 iOS原生平臺 cc.log的過程中可能會崩潰的問題 #1687
    • 修復 Android平臺上 XMLHTTPRequest獲取不到 statusText 時引發的崩潰問題 #1629
    • 修復 Android無法播放遠程視頻的問題 #1661
    • 修復原生和 Web 平臺無法加載分包中的資源的問題
    • 修復 Vec3 和 Rect 反序列化結果可能不正確的問題
    • 修復不同 shader 使用同一個 uniform 名稱,但是類型不同時獲取數據不對的問題

    Known Issues

    • 這個版本如果在代碼中頻繁修改節點的 zIndex,性能開銷可能會比較大,我們將在下個版本進行優化。
    • 在百度小游戲平臺上,目前暫時還存在一些平臺方面的問題,我們正在配合百度的工程師進行修復。
      • 安卓上存在音頻兼容性問題
      • 不支持重力感應
      • XMLHttpRequest 不支持 timeout 回調
    2019.02.10

    V2.0.8

    發布時間: 2019.02.10

    改動列表

    • 在 cc.WXSubContextView 組件上增加了 reset 方法,讓用戶在切換子域視圖的時候能通過調用這個 API 來正確重置視圖大小。(https://github.com/cocos-creator/engine/pull/3718)
    • 修復在安卓微信 7.0.3 上部分機型開啟了 Retina 仍然會模糊的問題
    • 修復在安卓微信 7.0.3 上因監聽 Device Motion 導致的幀率不穩
    • 修復微信小游戲子包不含任何資源時加載會報錯的問題
    • 修復在微信開放數據域中無法使用 BMFont 的問題
    • 修復 RichText 使用 font 標簽無效的問題
    • 修復 RichText 使用 on 標簽時無法傳參的問題
    • 修復編輯器無法通過命令行構建項目的問題
    • 適配從 Creator 2.1 降級到 2.0 之后的場景縮放問題
    2019.01.07

    V2.0.7

    發布時間: 2019.01.07

    最近剛剛發布的 Cocos Creator v2.0.6主要提供了在 Android 和 iOS 上快速接入 Facebook Audience Network和 Facebook Live Video的支持,同時優化了 vivo/OPPO 小游戲的構建流程。 這次發布的 2.0.7 則在 2.0.6 的基礎上,進行了比較大的升級。修復了不少 2.0.5 以來遺留的問題,大幅 提高了原生平臺的骨骼動畫性能,同步了 2.1.0 的一些改進,建議所有平臺還在開發階段的項目進行升級。以下是相對于 2.0.6 的改動說明:

    支持發布到華為快游戲平臺

    Cocos Creator 正式支持了發布到華為快游戲,詳細用法請查閱發布到華為快游戲平臺。

    大幅優化原生平臺上的 Spine 和 DragonBones 性能

    之前有不少用戶反饋 Cocos Creator 升級到了 2.0 后,原生平臺的骨骼動畫性能很差,甚至被迫退回到 1.9 或 1.10 版本,為此我們深表歉意。為了解決這個問題,此次更新大幅優化了原生平臺上的 Spine 和 DragonBones 的性能,下面是性能測試結果: 

    1

    測試的分值根據幀率換算而來,值越高性能越好??梢院苊黠@看到,優化后的性能甚至比 1.9、1.10 還快了平均一倍。另外除了性能上的優化,這個版本還支持了 DragonBones 的二進制格式(.dbbin)。

    還需要注意的是,這個版本如果運行在 iOS 9 的系統上,反而會引起負優化。因為這個版本更加倚重了 JavaScript 的 TypedArray 數據結構,而 iOS 9 中的 JavaScriptCore 并不支持 TypedArray,所以性能開銷反而會變大。iOS 10 或后續的系統都沒有這個問題。建議如果項目一定要支持到 iOS 9,則停留在 1.x 版本。

    優化基礎渲染性能

    v2.0 相比 v1.x,有一些情況引擎不會合并渲染批次,導致了 Draw Call 的增加,例如 Color 或 Opacity 不同,或者共用同一貼圖的多個 Sprite 組件混用 Simple、Sliced 或 Filled 模式時的情況。這些問題在該版本都得到了優化,只要它們所在節點的 group 相同,Draw Call 都會被合并。此外,節點 Opacity 為 0 會占用 Draw Call 的問題也優化了。

    優化 Label 渲染性能

    之前如果場景中同時存在著不少 Label 和 Button 之類的圖片,并且它們相互疊加,則會打斷渲染引擎的合并操作,使得 Draw Call 升高。這個問題在這個版本中得到了進一步優化。在該版本中,如果 Label 使用的是 TTF(或系統字體),受益于增強后的 動態合圖機制,這些 Label 都將盡可能與其它紋理進行批次合并。只要滿足動態合圖的要求,總共就只會有一個 Draw Call。該優化只適用于不會頻繁更新的 Label,因此需要手動勾選 Label 上的”Batch As Bitmap”來啟用。同時,由于兼容性問題,該優化在桌面端的 Chrome 和微信小游戲暫時不會啟用,有需要測試 DrawCall 的話請使用真機或其它瀏覽器。此外,該版本也修復了 BMFont 和其它圖片打包為自動圖集后,仍然無法合并 Draw Call 的問題。如果 Label 使用了 BMFont,可以嘗試將 BMFont 所用的圖片和在場景中與其相互打斷的圖片設置為同一個自動圖集,就能提升渲染性能。

    新增 Cocos Services 面板

    新增了獨立的一體化 服務面板,通過這個面板,用戶可以快速的為游戲集成服務,詳見 服務面板。

    完整支持微信小游戲資源分包

    由于微信小游戲天然適合從用戶的 CDN 中遠程加載資源,因此在前期的版本中 Cocos Creator 僅提供了代碼分包功能,資源分包還未實現。通過近期和用戶的交流,以及和 Cocos 其它內部團隊的合作,這個版本正式加入了資源分包的支持,使用方法和原來的代碼分包完全一致,詳見 分包加載。

    增加模擬器調試功能

    在項目設置 - 預覽運行面板中,新增了“開啟模擬器調試界面”選項和“等待調試器連接”選項。前一個選項的作用是,在模擬器預覽項目時將自動打開調試窗口。后一個選項的作用是,暫停啟動過程直至調試器連接完成,用于調試加載過程。

    Editor Fixes

    • 在 Dashboard 新建項目的模板中添加了 Matchvs 聯網游戲范例
    • Dashboard 改為在打開工程的時候關閉,工程關閉的時候自動打開
    • Dashboard 將會自動記錄上一次創建的工程路徑
    • 優化 Button 在編輯器下的預覽效果
    • 優化 Button Click Event 對組件的索引方式,避免腳本重命名后索引就丟失的問題
    • 完善粒子系統的圖片導入方式
    • 屏蔽 Spine 和 DragonBones 組件上無效的混合模式,如果有需要請直接在 Spine 或 DragonBones 編輯器中設置。
    • 構建微信小游戲主域工程時,不會再清空子域
    • 修改構建 Android 平臺時默認選中的 API Level 為當前最高的 Level(Target API Level)
    • 保證在重復構建項目時,自動圖集的文件不會因為內部 SpriteFrame 的排序變了而產生差異
    • 允許設置 RichText 所用的系統字體
    • 新增插件商城在插件下載完成后自動提示用戶安裝
    • 移除了場景編輯器中的節點路徑欄,節點路徑可通過層級管理器的節點右鍵菜單獲取
    • 動畫編輯器對 cc.Enum 和 cc.Integer 類型的數值默認改用 Constant 曲線,不進行插值
    • 動畫編輯器關鍵幀增刪體驗優化
    • 編輯器加載自定義引擎時,如果無法成功則自動回退到內置引擎
    • 優化引擎自動編譯有關體驗
    • 導入 Cocos Studio 場景時,將會自動添加默認 Canvas 和 Camera 節點
    • 新增了其它一系列體驗優化

    Engine Fixes

    • [Native] 在 iOS 和安卓平臺重新加入了在 v2.0.0 中移除的 WebView和 VideoPlayer支持
    • [Native] Mac 原生平臺切換至 V8 引擎,如需用回 JSC 需手動修改宏,詳見 #1515
    • [Native] 添加原生平臺 LocalStorage 缺失的 key 和 length 屬性,詳見 #1371
    • [Native] 在 iOS 原生平臺上采用跟 Android 統一的拼音輸入行為,不保留輸入未完成的拼音
    • [Native] 升級安卓編譯方式到 NDK r16 + Clang,同時采用 Clang 編譯安卓預編譯庫
    • [Native] 升級 Android 構建工具配置 Gradle 至 4.4,plugin 至 3.1.4。(Gradle 4.6 有已知 issue 會導致資源打包失?。?/li>
    • [Native] 優化安卓輸入框使用體驗
    • [Native] 清理原生平臺模版工程對 AnySDK 和 Cocos Analytics 的依賴,改由 Cocos Services 進行集成
    • [Native] 允許在原生平臺的 release 編譯模式下啟用 V8 調試器
    • [Native] 簡化 jsb-adapter 定制流程
    • 在 Layout組件上新增 affectedByScale 屬性,如果開發者希望 Layout 子節點的縮放能夠影響布局,可以手動開啟該選項。
    • 允許 RichText中的字段在響應點擊事件時傳入自定義字符串作為參數,如 <on click="submit" param="10">Submit</on>
    • 添加了 cc.sys.languageCode屬性,用于獲取完整的系統語言信息,以便區分某些語言的不同方言(subtag)。返回值是一個小寫的字符串,例如"zh-tw", "en", "en-us", "fr", "fr-fr", "es-es"。
    • 改善 emoji 在 Label中的自動換行結果
    • Label支持了 XML 格式的 fnt 文件
    • Label節點 onEnable 時將立即刷新一次節點的 Content Size
    • 當 Button的 target 未定義時,將默認使用當前節點
    • ToggleContainer增加了和 Toggle 類似的 checkEvents 事件屬性,該事件只有在 Toggle 的 isChecked 狀態變為 true 時才觸發
    • 將 cc.instantiate()過程中添加到對象上的臨時成員變量設為不可枚舉
    • 優化 VideoPlayer在 X5 瀏覽器上的適配
    • 優化了 VideoPlayer全屏播放的有關適配
    • 增加 Web 平臺上 WebView的透明度支持
    • 優化了 WebView的顯示位置
    • 支持在微信小游戲上響應 cc.game.EVENT_SHOW事件時,獲取到平臺傳入的 res和 referrerInfo參數
    • 完善微信小游戲資源下載時的容錯處理 #56
    • 新增 CC_RUNTIME預定義宏,在 OPPO、vivo小游戲上 CC_RUNTIME將為 true,CC_JSB將為 false

    Bug Fixes

    Editor

    • 修復節點大小為 0 時,在場景編輯器中使用矩形變換工具拖動節點導致的錨點計算錯誤
    • 修復在場景編輯器里面能選中 RichText 子節點的問題
    • 修復場景編輯器中的網格背景會穿透到某些半透明圖片上方,導致顏色和運行時有一些差異的問題
    • 修復 Mask 組件被動畫編輯器修改后場景編輯器顯示異常的問題
    • 修復 Collider 組件在編輯模式中添加的點位置發生偏移的問題
    • 修復在 Hierarchy 面板中無法將最后一個場景根節點的子節點拖到空白處的問題
    • 修復更改節點鎖定狀態或者關聯預制節點的時候沒有場景保存提示的問題
    • 修復在預覽游戲過程中切換當前編輯場景后,預覽的游戲將無法跳轉回原先編輯場景的問題
    • 修復模擬器手動刷新后會連續報錯導致編輯器卡死的問題
    • 修復動畫編輯器暫停時,粒子無法正常預覽的問題
    • 修復動畫編輯器節點列表可能沒更新的問題
    • 修復在動畫編輯狀態下修改腳本可能會導致節點錯亂的問題
    • 修復構建面板未指定默認場景時,彈出報錯后將無法重新構建的問題
    • 修復當自動圖集的 pac 文件被場景直接引用后,發布工程時仍將丟失未被引用的 SpriteFrame 的問題
    • 修復構建 OPPO 小游戲時,如果因為未設置 release 簽名而報錯,構建面板仍然會顯示構建完成的問題
    • 修復微信小游戲構建時如果有多個子包將出現警告的問題
    • 修復微信小游戲主域構建時,會清空子域包的問題
    • 修復 QQ 輕游戲構建時勾選 MD5 將會導致文件上傳失敗的問題
    • 修復 QQ 輕游戲構建時屏幕朝向設置未導出的問題
    • 修復發布 Android Instant 平臺時遠程服務器 ip 獲取錯誤的問題
    • 修復編輯器加載的腳本最外層包含 cc.game.setFrameRate時會引起 Button 縮放失效的問題
    • 修復在編輯器下訪問 cc.systemEvent時的報錯
    • 修復自定義 Cocos2d-x 引擎時找不到模擬器的問題
    • 修復使用命令行構建項目時,不論是否出錯,錯誤碼始終返回 0 的問題

    Engine

    • 修復節點 destroy后,activeInHierarchy仍為 true 的問題
    • 修復 RenderTexture中的 filter, premultiply alpha設置無效的問題
    • 修復無法加載由插件引入的場景的問題
    • 修復 Sprite組件使用 Filled 模式無法正確顯示圖集中旋轉的 SpriteFrame 的問題 #3581
    • 修復延時加載 ttf字體會導致加載死循環的問題
    • 修復使用自定義 ttf字體可能引起 FPS 波動的問題
    • 修復延遲加載的 fnt字體不顯示的問題
    • 修復 EditBox鍵盤收起來后屏幕就無法自動適配朝向的問題
    • 修復在透明節點上的 RichText被重新賦值文本后會閃一下的問題
    • 修復節點的 color 對 RichText無效的問題
    • 修復 LabelOutline組件 enabled 狀態修改時效果沒同步變化的問題
    • 修復 LabelOutline設置顏色無效的問題
    • 修復 PageView組件位置發生偏移的問題
    • 修復 Layout計算 anchor 時,值有可能變為 Infinity 的問題
    • 修復 Spine的 Skeleton 組件勾選了預乘后導致節點 opacity 失效的問題
    • 修復當 Spine在 Mask 下重新加載時貼圖有可能丟失的問題
    • 修復 DragonBones不同節點使用相同骨骼不同圖集時的顯示問題
    • 修復使用了 Mask的情況下 Spine 有可能丟失貼圖導致的渲染異常
    • 修復 Mask在 IMAGE_STENCIL 模式下未指定 SpriteFrame 時無限報錯的問題
    • 修復 Mask組件在編輯器中 undo 時,SpriteFrame 的改動不會更新的問題
    • 修復場景延遲加載時,Mask采用 IMAGE_STENCIL 模式導致的報錯 #3656
    • 修復 MotionStreak引起的 GL 報錯
    • 修復 Button在 Scale 模式下會使節點的 scaleY 變成 scaleX 的問題
    • 修復 Button在多個狀態互相疊加時可能有些狀態失效的問題
    • 修復了在 start 方法中設置 Toggle的isChecked無效的問題
    • 修復游戲暫停再繼續以后,Animation發生閃現的問題 #3584
    • 修復 cc.sys.getSafeAreaRect在非 iOS 原生平臺返回的設計分辨率坐標不對的問題
    • 修復 Node 的 group修改后立即調用 findCamera,無法獲得最新結果的問題 #3642
    • 修復啟用 MD5 后反復加載同個 Audio時,調用棧有可能溢出的問題 #3648
    • 修復 Audio多次重復加載后可能無法播放的問題 #3702
    • 修復 AnimationState的參數有可能解析為字符串類型的問題
    • 修復 MouseJoint未能響應 touch cancel 的問題
    • 修復預覽游戲時,cc.game的 EVENT_GAME_INITED和 EVENT_ENGINE_INITED事件不會觸發的問題
    • [Wechat] 修復微信小游戲開放數據域上設置-webkit-transform出現的報錯
    • [QQPlay] 修復 QQ 輕游戲不響應前后臺切換事件的問題
    • [QQPlay] 修復 QQ 輕游戲上如果使用斜體,字體將會變得很小的問題
    • [Wechat][QQPlay]修復小游戲平臺 audio setCurrentTime之后,不觸發 ended事件的問題 #3373
    • [Wechat][QQPlay]修復在微信小游戲、QQ 輕游戲中播放聲音時,切換前后臺回到游戲,聲音播放的相關問題 #3688
    • [Web] 修復 Chrome69、70 上半透明對象渲染后可能出現白色殘影的問題 #3357
    • [Web] 修復在瀏覽器上頻繁切換橫豎屏時 EditBox可能報錯的問題
    • [Web] 修復在瀏覽器上 cc.sys.platform平臺狀態錯誤的問題
    • [Web] 修復在瀏覽器上調用 cc.view.setFrameSize不生效的問題
    • [Web] 修復在安卓部分 WebView 上未啟用 WebGL 導致的運行問題
    • [Web] 修復在 Web 平臺上 Android 9 系統獲取到的重力感應方向相反的問題
    • [Web] 完善在瀏覽器上的字體加載方式,修復個別 ttf字體必須加載很久的問題 #3708
    • [Native] 修復原生平臺圖片預乘失效的問題
    • [Native] 修復原生平臺上 Spine預乘效果不對的問題
    • [Native] 修復原生平臺連接 socket.io服務器可能會報 Bad Request 的錯誤
    • [Native] 修復 iOS 和安卓無法檢測重力感應的問題
    • [Native] 修復 iOS 調用 cc.game.restart重啟游戲后再輸入文本會崩潰的問題
    • [Native] 修復 Windows 原生平臺上 Label的 opacity 屬性不生效的問題
    • [Native] 修復安卓上無法監聽 onKeyUp的問題
    • [Native] 修復安卓手機如果自帶的 SSL 證書過期后會導致資源加載失敗的問題
    • [Native] 修復安卓原生平臺下載圖片時不支持服務器重定向的問題 #1584
    • [Native] 修復在 iOS 橫屏模式下,EditBox輸入的內容不可見的問題
    • [Native] 修復 iOS9不支持 Promise 導致的運行問題
    • [Native] 修復在原生平臺上設置音量為 0 時,音量會變為 1 的問題 #94

    已知問題

    • 目前 OPPO 小游戲的分包功能仍不支持
    • VideoPlayer 在安卓上鎖屏后再進入,游戲會崩潰
    • VideoPlayer 在 iOS 上進入全屏后將無法返回游戲

    升級指南

    v2.0.7 升級注意事項

    安卓的 NDK 版本需要升級到 r16,否則將編譯失敗。

    微信小游戲開放數據域

    從 v2.0.1 開始,Cocos Creator 升級了開放數據域解決方案,請參閱 接入小游戲開放數據域。

    v2.0 升級指南

    詳見 v2.0 升級指南。

    資源升級

    從 v1.10 開始,Cocos Creator 對底層資源類型進行了重構,大多數項目不受影響,但有些項目可能會收到一些警告,詳情請查閱 v1.10 資源升級指南。

    后續版本預告

    v2.1 也將迎來升級

    相比 v2.0,v2.1 的提升將主要圍繞 3D 領域,我們推薦有 3D 需求的新項目升級到這個版本,并且在論壇等渠道和我們建立聯系,我們負責 3D 的小伙伴將提供相關支持。由于 2.1 是一個很新的版本,我們將加快迭代頻率,盡量滿足開發者的需求。2.1 的下一個版本是 2.1.1,該版本將支持 3D 場景編輯、攝像機預覽和材質系統,同時也會合并 2.0.7 的這些改動。

    附:微信小游戲升級提示

    根據微信團隊的通知,微信 Android 端將調整小游戲“在屏Canvas” 的放縮策略。在現有的 Creator 版本中,cc.view.enableRetina(true)默認是會調用的,你無需做出任何改動,一般不會遇到適配問題。如果有需要,也可以在發布后的 main.js 中,手動修改 cc.view.enableRetina為 false。

    2018.12.14

    V2.0.6

    發布時間: 2018.12.14

    Cocos Creator v2.0.6 基于 v2.0.5 升級而來,在保證 v2.0.5 穩定性的基礎上,提供了在 Android 和 iOS 上快速接入 Facebook Audience Network和 Facebook Live Video的支持。Facebook Audience Network 是 Facebook 推出的廣告平臺,提供了強大的廣告變現的能力。Facebook Live Video 是 Facebook 推出的直播 SDK,允許玩家在玩游戲的時候直接進行游戲直播,并且分享到 Facebook 的社交網絡,有效提高了游戲的傳播能力。有關這兩個 SDK 的具體接入流程,請參考文檔《Facebook 直播和廣告》。此外,這個版本還優化了 vivo/OPPO 小游戲的構建流程,建議要發布 vivo/OPPO 小游戲的項目及時升級。

    改動列表

    • 在服務面板中添加了 Facebook Audience Network和 Facebook Live Video集成選項
    • 修復 Facebook Instant Games 無法上傳的問題
    • 修復 Facebook Instant Games 打出來的 zip 包未啟用 zip 壓縮的問題
    • 優化了 vivo 小游戲的構建面板:
      1. 移除了 npm 路徑輸入框
      2. 應用圖標修改為任意路徑,不再局限于游戲工程的路徑,并在應用圖標輸入框右邊添加了可選擇圖片路徑功能的按鈕
      3. 去除了 certificate.pem、private.pem 證書固定放在[游戲工程]/build-templates/jsb-link的用法,修改為自主選擇它們的路徑。同時在選擇 certificate.pem 的最右邊按鈕,增加了證書的功能。(注意使用 Windows 系統需要事前裝 openssl 軟件和配置其環境變量)
    • 優化了 OPPO 小游戲構建面板:
      1. 移除了 npm 路徑輸入框和 quickgame 輸入框,Cocos Creator 已內置 quickgame。
      2. 應用圖標修改為任意路徑,不再局限于游戲工程的路徑,并在應用圖標輸入框右邊添加了可選擇圖片路徑功能的按鈕
      3. 去除了 certificate.pem、private.pem 證書固定放在[游戲工程]/build-templates/jsb-link的用法,修改為自主選擇它們的路徑。同時在選擇 certificate.pem 的最右邊按鈕,增加了證書的功能。(注意使用 Windows 系統需要事前裝 openssl 軟件和配置其環境變量)
      4. 打包分包 rpk 時的輸出路徑調整為和未設置分包 rpk 時的路徑一樣,在[游戲工程]/build/quickgame/build/目錄里。并且打包分包 rpk 時只會生成一個 rpk 文件,不再生成其他分包目錄。
    • 微信小游戲發布后默認不啟用 ES6 轉 ES5
    • 在微信小游戲上默認將最大下載并發數(cc.macro.DOWNLOAD_MAX_CONCURRENT)限制在 10 個以內
    • 修復微信小游戲調用 cc.game.end()時的報錯
    • QQ 輕游戲構建時允許直接打包出 zip 文件,便于上傳服務器
    • 修復 QQ 輕游戲上 Mask 渲染的問題
    • 修復編譯過 Android + AnySDK 后會導致 Android Instant 平臺運行閃退的問題

    后續版本預告

    v2.0.7 即將發布,重點優化原生平臺性能我們很快將對 v2.0.7 進行公測,在這個版本中我們優化了引擎的渲染性能,尤其是原生平臺的 Spine 和 DragonBones,性能都有了很大幅度的提升。v2.1 的迭代將會比較激進相比 v2.0,v2.1 的提升將主要圍繞 3D 領域,我們推薦有 3D 需求的新項目升級到這個版本,并且在論壇等渠道和我們建立聯系,我們負責 3D 的小伙伴將提供相關支持。由于 v2.1 是一個很新的版本,我們將加快迭代頻率,盡量滿足開發者的需求。我們將會在近期就推出 v2.1.1 版本,用來支持 3D 場景編輯、攝像機預覽和材質系統,優化 3D 開發流程。

    2018.11.29

    V2.1.0

    發布時間: 2018.11.29

    Cocos Creator 從 v2.1 版本開始,最大的改動就是支持了 3D 模型渲染、3D Camera、3D 骨骼動畫、3D 點選等 3D 特性,同時編輯器原生支持解析 FBX 格式的 3D 模型文件,不需要額外的導入流程。

    在之前的 v2.0 中,Cocos Creator 就已經用上了基于 Cocos3D 的 3D 渲染器,具備了正式引入 3D 支持的基礎。3D 特性的加入可以大大豐富 2D 游戲的表現力,減輕 2D 游戲的資源開銷,帶來更多的想象與擴展空間。不過需要強調的是,Cocos Creator 的目標用戶仍然是現有的 2D 游戲開發團隊,2D 游戲仍然是 Cocos Creator 2.x 時代的核心服務目標。我們會堅持優化 2D 游戲的開發體驗及基礎性能,逐步增加適合融入 2D 游戲的 3D 功能,陪伴 2D 游戲團隊共同成長。因此,Cocos Creator 不會成為一個純 3D 引擎,那是 Cocos3D 的目標。Cocos Creator 的發展路線更接近 2.5D。

    這不是 Cocos 第一次把引擎從 2D 升級到 3D,幾年前 Cocos2d-x 就在 3D 領域進行過擴展,積累了不少經驗,更誕生了“劍與家園”這樣非常優秀的作品。不過當時是在一套已經很重的 2D 渲染器上堆砌 3D 功能,也缺乏編輯器支持,因此最終并未得到市場的廣泛認可。而這一次,Cocos Creator 是在 Cocos3D 的 3D 渲染器基礎上,直接把 3D 潛能釋放出來,也保證了無縫的編輯器使用體驗,因此這次的改變是完全不同性質的。

    后續版本預告

    v2.0 會繼續維護,原生平臺性能將會盡快優化

     v2.0 和 v2.1 將在一段時間內共同發展,v2.0 會繼續維護,增加更多的性能優化和缺陷改善。我們很快將對 v2.0.7 進行公測,在這個版本中我們優化了引擎的渲染性能,尤其是原生平臺的 Spine 和 DragonBones,性能都有了很大幅度的提升。

    v2.1 的迭代將會比較激進 

    相比 v2.0,v2.1 的提升將主要圍繞 3D 領域,我們推薦有 3D 需求的新項目升級到這個版本,并且在論壇等渠道和我們建立聯系,我們負責 3D 的小伙伴將提供相關支持。由于 v2.1 是一個很新的版本,我們將加快迭代頻率,盡量滿足開發者的需求。特別是目前 v2.1.0 版本仍不支持 3D 場景編輯,僅能夠在屬性檢查器中對節點進行 3D 參數的設置。我們將會在近期就推出 v2.1.1版本,用來支持 3D 場景編輯和材質系統,優化 3D 開發流程。

    完整改動列表(相比 v2.0.5)

    3D 節點  

    在 2.1 中,默認新創建出來的節點都仍然是 2D 的,當有需要時,只需要點擊節點右上方的 2.5D 按鈕就能切換成 3D 模式,切換后就能編輯 z 軸,詳見 [3D Node]。

    3D節點切換動畫_2
    3D節點切換動畫

    3D Camera  

    和 Node 一樣,Camera 也分為了兩種模式。當你把 Camera 組件添加到普通的 2D 節點上時,它就是一個 2D Camera。當你把 Node 切換到 3D 模式后,Camera 也會進入 3D 模式,3D 模式下即可編輯 Camera 的 FOV 等參數。

    3D Camera切換動畫_2
    3D Camera切換動畫

    3D 模型導入  

    目前 Cocos Creator 支持導入的 3D 模型格式為使用非常廣泛的 .fbx,基本上 3D 建模軟件都支持導出這種格式。導入的流程很簡單,只需要將 .fbx 模型資源拖入到資源管理器,等待片刻即可完成導入工作。導入完成后,在資源管理器中看到導入后的模型資源是一個可以展開的文件夾,導入模型的時候編輯器會自動解析模型的內容,并生成 Prefab、網格、骨骼動畫等資源,詳見[導入模型]。

    1

    Mesh Renderer 組件  

    Mesh Renderer 用于繪制網格資源,詳見[Mesh Renderer 組件]。

    2

    ?骨骼動畫組件  

    骨骼動畫組件繼承自 Animation 組件,骨骼動畫組件的使用方法與 Animation 組件沒有太大區別,只是骨骼動畫組件使用的剪輯只能是骨骼動畫剪輯。骨骼動畫組件將在導入模型時自動添加到模型的 Prefab 中,詳見[骨骼動畫組件]。

    3

    更多 3D 相關說明,請查閱文檔[3D 系統]。

    優化自動圖集構建速度  

    大幅優化自動圖集構建速度,如果圖集沒有改變的話則直接使用上次構建的結果。

    進一步提升渲染性能  

    v2.0 相比 v1.x,有一些情況引擎不會進行渲染批處理,導致了 Draw Call 的增加。v2.1 對這些情況重新進行了優化。如之前 Color 或 Opacity 不同無法批處理,Sliced 和非 Sliced 共用同一貼圖無法批處理,Opacity 為 0 的節點仍占用 Draw Call 的問題都得到了解決。

    增加模擬器調試功能  

    在項目設置 - 預覽運行面板中,新增了“開啟模擬器調試界面”選項和“等待調試器連接”選項。前一個選項的作用是,在模擬器預覽項目時將自動打開調試窗口。后一個選項的作用是,暫停啟動過程直至調試器連接完成,用于調試加載過程。

    4

    紋理自動壓縮  

    可以直接在編輯器中設置紋理需要的壓縮方式,Creator 將在項目發布時自動對紋理進行壓縮。在 Web 平臺上支持同時導出多種圖片格式,引擎將根據不同的瀏覽器自動下載合適的格式,詳見[壓縮紋理]。

    編輯器  

    • Dashboard 改為在打開工程的時候關閉,工程關閉的時候自動打開
    • Dashboard 將會自動記錄上一次創建的工程路徑
    • 優化 Button 在編輯器下的預覽效果
    • 優化 Button Click Event 對組件的索引方式,避免腳本重命名后索引就丟失的問題
    • QQ 輕游戲構建時允許直接打包出 zip 文件,便于上傳服務器
    • 新增插件商城在插件下載完成后自動提示用戶安裝
    • 構建微信小游戲主域工程時,不會再清空子域
    • 修改構建 Android 平臺時默認選中的 API Level 為當前最高的 Level(Target API Level)
    • 移除了場景編輯器中的節點路徑欄,節點路徑可通過層級管理器的節點右鍵菜單獲取
    • 動畫編輯器對 cc.Enum 和 cc.Integer 類型的數值默認改用 Constant 曲線,不進行插值
    • 動畫編輯器關鍵幀增刪體驗優化
    • 優化引擎自動編譯有關體驗
    • 新增了其它一系列體驗優化

    引擎  

    • [UI] 在 Layout 組件上新增 affectedByScale 屬性,如果開發者希望 Layout 子節點的縮放能夠影響布局,可以手動開啟該選項。
    • [UI] 支持 XML 格式的 fnt 文件
    • [UI] Label 節點 onEnable 時將立即刷新一次節點的 Content Size
    • [UI] 當 Button 的 target 未定義時,將默認使用當前節點
    • [UI] ToggleContainer 增加了和 Toggle 類似的 checkEvents 事件屬性,該事件只有在 Toggle 的 isChecked 狀態變為 true 時才觸發
    • [Action] 新增了 cc.Rotate3DTo、cc.rotate3DTo、cc.Rotate3DBy、cc.rotate3DBy 四個 Action 的支持
    • [Native] 在 iOS 和安卓平臺重新加入了在 v2.0.0 中移除的 WebView 和 VideoPlayer 支持
    • [Native] Mac 原生平臺切換至 V8 引擎,如需用回 JSC 需手動修改宏,詳見 [#1515]
    • [Native] 添加原生平臺 LocalStorage 缺失的 key 和 length 屬性,詳見[ #1371]
    • [Native] 在 iOS 原生平臺上采用跟 Android 統一的拼音輸入行為,不保留輸入未完成的拼音
    • [Android] 升級安卓編譯方式到 NDK r16 + Clang,同時采用 Clang 編譯安卓預編譯庫
    • [Android] 升級 Android 構建工具配置 Gradle 至 4.4,plugin 至 3.1.4。(Gradle 4.6 有已知 issue 會導致資源打包失?。?/li>
    • [Android] 優化安卓輸入框使用體驗
    • [Android] 壓榨安卓空包包體,最小包體從 7.0MB 減小到 6.3MB
    • [Web] 增加 Web 平臺上 WebView 的透明度支持
    • [Web] 優化了 WebView 組件的顯示位置
    • [Web] 優化 VideoPlayer 在 X5 瀏覽器上的適配表現
    • [Wechat] 支持在微信小游戲上響應 cc.game.EVENT_SHOW 事件時,獲取到平臺傳入的 res 和 referrerInfo 參數
    • [VideoPlayer] 優化了 VideoPlayer 全屏播放的有關表現

    Bug Fixes

    編輯器  

    • 修復動畫編輯器節點列表可能沒更新的問題
    • 修復在場景編輯器里面能選中 RichText 子節點的問題
    • 修復使用命令行構建項目時,不論是否出錯,錯誤碼始終返回 0 的問題
    • 修復場景編輯器中的網格背景會穿透到某些半透明圖片上方,導致顏色和運行時有一些差異的問題
    • 修復外部拖拽資源到資源管理器的無效位置時,編輯器會報錯的問題
    • 修復發布 Android Instant 平臺時遠程服務器 ip 獲取錯誤的問題

    引擎  

    • [Core] 修復節點 destroy 后,activeInHierarchy 仍為 true 的問題
    • [Core] 修復 RenderTexture 中的 filter, premultiply alpha 設置無效的問題
    • [Core] 修復無法加載由插件引入的場景的問題
    • [Web] 修復 Chrome 69、70 上半透明對象渲染后可能出現白色殘影的問題(Since 2.0)[#3357]
    • [UI] 修復 Button 在多個狀態互相疊加時可能有些狀態失效的問題
    • [UI] 修復 LabelOutline 設置顏色無效的問題
    • [UI] 修復了在 start 方法中設置 Toggle.isChecked 無效的問題
    • [UI] 修復 LabelOutline 組件 enabled 狀態修改時效果沒同步變化的問題
    • [Animation] 修復 AnimationState 的參數有可能解析為字符串類型的問題
    • [QQPlay] 修復 QQ 輕游戲不響應前后臺切換事件的問題
    • [QQPlay] 修復 QQ 輕游戲上如果使用斜體,字體將會變得很小的問題
    • [QQPlay] 修復 QQ 輕游戲在鎖屏重新進入或前后臺切換時,聲音無法重新播放的問題
    • [微信小游戲] [QQPlay] 修復小游戲平臺 audio setCurrentTime 之后,不觸發 ended 事件的問題[#3373]
    • [Native] 修復原生平臺連接 socket.io 服務器可能會報 Bad Request 的錯誤
    • [Native] 修復 iOS 和安卓無法檢測重力感應的問題
    • [Native] 修復 iOS 調用 cc.game.restart 重啟游戲后再輸入文本會崩潰的問題
    • [Native] 修復 Windows 原生平臺上 Label 的 opacity 屬性不生效的問題
    • [Native] 修復安卓上無法監聽 onKeyUp 的問題
    • [Native] 修復安卓手機如果自帶的 SSL 證書過期后會導致資源加載失敗的問題
    • [Native] 修復安卓原生平臺下載圖片時不支持服務器重定向的問題 [#PR]
    • [Physics] 修復 MouseJoint 未能響應 touch cancel 的問題
    • [Spine] 修復當 Spine 在 Mask 下重新加載時貼圖有可能丟失的問題

    MIGRATION GUIDE

     v2.1 升級注意事項  

    • Node 的 rotation 相關 API 已被標記為 deprecated,運行時將提示升級為 angle ,詳見[3D Node - Node API 升級]
    • 安卓的 NDK 版本需要升級到 r16,否則將編譯失敗。

    微信小游戲開放數據域  

    從 v2.0.1 開始,Cocos Creator 升級了開放數據域解決方案,請參閱[接入小游戲開放數據域]。

    v2.0 升級指南  

    詳見[v2.0 升級指南]

    資源升級  

    從 v1.10 開始,Cocos Creator 對底層資源類型進行了重構,大多數項目不受影響,但有些項目可能會收到一些警告,詳情請查閱[v1.10 資源升級指南]。

    以上就是 Cocos Creator v2.1.0 的更新說明。各位開發者進入 Cocos 官網下載新版本,下載完畢新建一個 example 工程,打開 assets/cases/3d 下的案例即可體驗。

    2018.11.06

    V2.0.5

    發布時間: 2018.11.06

    v2.0.5 相比不久前發布的 v2.0.2,提供了發布到 OPPO 小游戲和 vivo 小游戲平臺支持,修復了不少問題,進一步提升了產品穩定性,強烈建議所有 2.0 用戶及時更新版本。良好的品質離不開細心的打磨,非常感謝各位開發者通過社區、GitHub、Cocos 技術服務等渠道反饋的意見。

    新增發布到 OPPO 小游戲平臺

    Cocos Creator 正式支持了發布到 OPPO 小游戲,詳細用法請查閱 [發布到 OPPO 小游戲平臺]。

    新增發布到 vivo 小游戲平臺

    Cocos Creator 正式支持了發布到 vivo 小游戲,詳細用法請查閱 [發布到 vivo 小游戲平臺]。

    Editor

    • [Auto Atlas] 修復自動圖集默認的BestAreaFit 算法無法計算出正確的圖集大小的問題
    • [Auto Atlas] 修復自動圖集的目錄出現嵌套時,父目錄中的圖集會把子目錄中的圖片重復打包進去的問題
    • [Auto Atlas] 修復自動圖集打包后可能出現黑邊的問題(舊的自動圖集需要刪掉配置重新創建才會生效)
    • [Auto Atlas] 修復自動圖集Force Squared 選項不生效的問題
    • [Wechat] 修復構建微信小游戲時無法修改子域目錄名的問題
    • [QQPlay] 修復v2.0.2 在QQ 輕游戲上無法導出插件腳本的問題
    • [Google Play Instant] 構建Android Instant 時允許Default URL 為空

    Engine

    • [Core] cc.loader.loadResArray 的第二個參數支持傳入一個type 數組(感謝@caochao)[#3312]
    • [Native] 增加 cc.sys.getSafeAreaRect() API 來獲取手機屏幕安全區域(以設計分辨率為單位)
    • [Core] 修復v2.0 屏幕渲染效果有輕微模糊的問題
    • [Core] 修復了當組件被 destroy() 時,如果所在節點還未添加到場景,組件可能仍然會被激活的問題
    • [Core] 修復SpriteFrame 調用 setRect() 后效果不對的問題
    • [Core] 修復v2.0 中cc.Texture2D 調用initWithData() 時的報錯
    • [Core] 修復v2.0 中渲染組件在節點未激活時依然可能會渲染的問題
    • [UI] 修復Toggle 組件設置 isChecked 屬性時狀態未更新的問題
    • [UI] 修復ScrollView.content 對象修改時的報錯
    • [UI] 修復v2.0 中RichText 中的部分文字可能不顯示的問題
    • [UI] 修復PageView 的began 事件不觸發的問題
    • [UI] 修復Mask 中的segments 無效的問題
    • [UI] 修復Mask 嵌套時Stencil 狀態不對的問題
    • [UI] 修復WebView 在讀取default 頁面時不觸發load 事件的問題
    • [UI] 修復橫豎屏頻繁切換時EditBox 可能報錯的問題
    • [UI] 修復 once 注冊的點擊事件在響應后仍會穿透給平級的其它節點的問題
    • [Audio] 修復Audio 對effect 的操作可能影響到music 的問題
    • [Spine] 修復v2.0 中ScrollView 中的Spine 透明度和預乘不對問題
    • [Animation] 修復動畫quickFindIndex 的問題
    • [Animation] 修復通過Animation 注冊lastframe 事件無效的問題
    • [Particle] 修復粒子系統調用 resetSystem() 會失敗的問題
    • [Wechat] 修復微信小游戲緩存空間已滿時,資源無法加載的問題
    • [Wechat] 修復微信小游戲從后臺切換前臺,會播放沒有釋放掉的音頻的問題
    • [Facebook Instant Games] 修復在Facebook Instant Games 上未啟用Retina 的問題
    • [iOS] 修復v2.0 在iOS 9 上由于不支持ES6 導致的報錯
    • [QQPlay] 修復QQ 輕游戲上font size 為float 類型的時候,文字顯示過小的問題
    • [Google Play Instant] 修復在分割首包界面編輯時,概率性出現jsb-adapter 重新加載導致的真機顯示黑屏問題

    MIGRATION GUIDE

    微信小游戲開放數據域

    從 v2.0.1 開始,Cocos Creator 升級了開放數據域解決方案,請參閱 [接入小游戲開放數據域]。

     v2.0 升級指南

    詳見 [v2.0 升級指南]。

    資源升級

    從 v1.10 開始,Cocos Creator 對底層資源類型進行了重構,大多數項目不受影響,但有些項目可能會收到一些警告,詳情請查閱 [v1.10 資源升級指南]。

    2018.10.18

    V2.0.4

    發布時間: 2018.10.18

    相對于 2.0.2,2.0.4  增加了發布到 Google Play Instant 的支持。其它功能未做任何調整。

    相關資源

    [使用文檔]

     

    2018.09.30

    V1.10.2

    發布時間: 2018.09.30

    v1.10.2 是對不久前發布的 v1.10.1 的缺陷修復,建議所有 1.10 用戶及時更新版本。2.0 用戶無需降級,因為該版本的修復都已經包含在近期發布的 v2.0.2 中。此外,v1.10.2 并未包含 v2.0.2 中對微信小游戲和 QQ 玩一玩的完整修復,因此如果需要發布到小游戲平臺,還是建議升級到最新的 v2.0.2 版本。良好的品質離不開細心的打磨,非常感謝各位開發者通過論壇、GitHub、Cocos 技術服務等渠道反饋的意見。

    Editor

    • 修復退出動畫編輯模式后,Widget.enabled 等屬性未正確還原的問題
    • 修復動畫編輯完成后不保存但是記錄殘留在編輯器中的問題
    • 完善層級管理器的節點展開、折疊操作
    • 完善層級管理器、資源管理器拖動節點時的樣式表現
    • 修復當組件的激活框被點擊的時候,組件會折疊起來的問題
    • 修復資源管理器復制多個文件的時候,只復制第一個的問題
    • 修復選中粒子退出動畫編輯器的時候,編輯器幀率會變低的問題
    • 修復導入未支持的 fnt 會導致編輯器卡住的問題
    • 啟動頁面中的語言選擇對話框,直接獲取系統設置

    Engine

    • 修復 removeAllActions 無法移除所有 action 的問題
    • 修復 SHOW ALL 模式下導致的觸摸位置偏移問題
    • 修復 Chrome 上旋轉 90 度后 Editbox 被隱藏的問題
    • 修復鎖屏情況下豎屏游戲橫屏顯示時重力感應的方向錯誤
    • 修復獲取 TiledLayer properties 為空的問題
    • 修復大量調用 loader 加載 API 后導致的加載性能下降
    • 修復 stopAllEffect、pauseAllEffects、setEffectsVolume 會同時影響到背景音樂的問題
    • 修復 once 事件監聽器無法阻斷平級觸摸事件的問題
    • 修復 touchstart 坐標在微信小游戲上不對的問題
    • 修復了 QQ 玩一玩上 emoji 導致的部分機器黑屏問題
    • 修復原生平臺上 java 和 js 相互調用時傳遞 null 引發的一些問題
    • 修復 Vec2.signAngle 的計算錯誤
    • 修復多行文本框某些情況下無法換行的問題
    • 修復 ScrollView 跟 mask 大小不一致時候,scrollTo* 位置會有偏差
    • 修復 ScrollView 向右下角或左上角滑動時,滾輪有概率顯示異常的問題
    2018.09.22

    V2.0.2

    發布時間: 2018.09.22

    FEATURE

    • 原生平臺添加 jsb.saveImageData 接口來保存截圖,請參考測試用例
    • TTF 字體加載融入 Loader 體系,支持 RichText 在全平臺的延遲加載
    • 添加 cc.Mat4 value type 類型,便于創建矩陣和矩陣的運算

    Editor Fixes

    • 修復動畫編輯器保存完動畫后,取消保存,但修改扔殘留在場景數據中的問題
    • 修復 MotionStreak 在動畫編輯器中添加 color 屬性時導致屬性面板 color 變為 null 的問題
    • 修復 RichText 節點的 Anchor 值修改后,場景編輯器中無響應的問題
    • 修復 Prefab 編輯界面下重編譯腳本導致場景丟失的問題
    • 修復關閉 Prefab 后 Hierarchy 層級全部展開并跳到首節點的問題
    • 修復節點樹未展開狀態下,點擊 inspector 中的節點無法跳轉的問題
    • 修復節點樹展開選項設置無效的問題
    • 修復復制節點樹不復制狀態,關閉的節點樹會被全部展開的問題
    • 修復 Prefab 編輯界面下重編譯腳本導致場景丟失的問題
    • 修復資源管理器的多項復制和粘貼無效問題
    • 修復動畫編輯器打開再關閉后場景內持有焦點的粒子系統變卡頓的問題

    Engine Fixes

    • 將 Camera clearFlags 默認開啟 stencil 和 depth
    • 修復了 inverted Mask 無效的問題
    • 修復部分小米手機上由于 Stencil buffer 狀態問題出現的渲染錯亂
    • 修復 Mask 組件互相影響 Stencil 區域的問題
    • 修復 Mask 內部的 Spine 節點影響外部的 Spine 節點同樣被剪裁的問題
    • 修復復雜 Graphics 讓 Mask Stencil 失效的問題
    • 修復大量調用 loader 加載 API 后導致的加載性能下降
    • 使用 uint8 做 MeshBuffer 擴充時的數據拷貝,避免 Graphics 因此產生的顏色錯誤
    • 兼容微信 6.6.5 及以下版本不支持 gl.getExtension 導致的引擎初始化失敗
    • 修復微信開放數據域中重寫 wx.onMessage 導致的警告
    • 修復小游戲開放數據域中旋轉節點方向錯誤的問題
    • 修復開放數據域中開啟 ES6 轉 ES5 導致 cc 未定義的問題
    • 修復 Editbox stayOnTop 時沒有監聽 endEditing 的問題
    • 修復 Editbox stayOnTop 狀態下文字被遮擋的問題
    • 修復 Web 平臺 Editbox 在 Camera 縮放情況下,輸入框和文字偏離的問題
    • 修復小游戲平臺 Editbox 多行輸入時,點擊完成會觸發多次 editingDidEnd 事件的問題
    • 修復 Editbox 在開始輸入時重新適配導致場景過小的問題
    • 修復 Chrome 上旋轉 90 度后 Editbox 被隱藏的問題
    • 修復 Particle 生命周期長于 emissionRate 時不會重復播放的問題
    • 修復粒子系統偶爾出現的虛化殘影渲染問題
    • 修復 Sprite 在 onEnable 是可能遺漏更新 material 導致的渲染問題
    • 修復延遲加載情況下,Sprite 的顏色設置失效的問題
    • 同步 TiledTile 和 TiledLayer 中對應圖塊的 gid
    • 避免 TiledLayer 在沒有貼圖的情況下的報錯
    • 修復獲取 TiledLayer properties 為空的問題
    • 修復 once 事件監聽器無法阻斷下層觸摸事件的問題
    • 修復 ActionManager removeAllActions 的泄漏風險
    • 修復 MotionStreak 的顏色類型問題
    • 修復 MotionStreak 不支持延遲加載的問題
    • 修復 ScrollView 中 content 的定位偏差
    • 修復 SHOW ALL 模式下導致的觸摸位置偏移問題
    • 修復 CC_WECHATGAME 在子域中為 false 的問題
    • 修復節點開啟 RichText 控件導致子節點消失的問題
    • 修復 AudioEngine setFinishCallback 的使用體驗問題
    • 修復 AudioEngine stopAllEffect 會把背景音樂停掉的問題
    • 修復 SpriteFrame 在修改 cap inset 設置時沒有更新 uv 的問題
    • 移除 cc.sys.dumpRoot 和 cc.sys.cleanScript
    • 修復設置幀率導致模擬器和原生平臺閃屏的問題
    • 修復 Windows 平臺 Label 換行后顯示為紅色的問題
    • 修復 Mac 平臺模擬器占用 CPU 過高的問題
    • 修復原生平臺中 Audio.State 缺失的問題
    • 修復原生平臺 sys.getNetworkType 和 getBatteryLevel 未適配的問題
    • 修復原生平臺 Editbox 編輯過程中可能產生的報錯
    • 修復 iOS 平臺 video player 全屏請求的問題
    • 修復 iOS Safari 上 fullscreen video 退出無法清除的問題
    • 修復 Native 平臺 Show / Hide 事件監聽回調可能導致的崩潰問題
    • 修復 windows 平臺從菜單欄喚醒程序時的偶發崩潰問題
    • 修復使用 SDKBox 引起的構建報錯
    • 修復部分文檔和 ts 代碼提示錯誤
    • 修復部分 API 描述和廢棄問題
    2018.08.23

    V2.0.1

    發布時間: 2018.08.23

    2.0.0 是一個經歷了大量底層重構的全新版本,部分開發者在升級項目過程中遇到了一些惱人的問題,這些問題我們一一收集并盡全力解決,現在為大家帶來 2.0.1 版本。這個版本除了大幅度提升穩定性和項目升級的友好度以外,我們還為開發者帶來了全新的微信小游戲開放數據域方案,大幅度提升開放數據域性能和使用的靈活度。

    FEATURE

    • 更新開放數據域方案
    • 提供微信平臺清理緩存的 API
    • 支持微信小游戲和玩一玩平臺通過 cc.game.setFrameRate 設置幀率
    • 為模擬器新增 View 菜單用于設置分辨率
    • 模塊化 RenderTexture 和 DynamicAtlas

    Editor Fixes

    • 修復編輯器中粒子資源導入的問題
    • 修復 Label 在編輯器中不受節點 Anchor 改變影響的問題
    • 修復編輯器中設置 BMFont 字體報錯
    • 修復部分 Particle 的顏色在 inspector 中無法顯示和設置的問題
    • 修復模擬器改變尺寸界面不會適配的問題
    • 修復動畫編輯器的曲線編輯器狀態殘留問題
    • 修復粒子系統在編輯器中的 svg 標示丟失的問題
    • 修復 Editbox 編輯 fontColor 不生效的問題
    • 修復動畫編輯器在播放動畫時切換 WrapMode 導致場景編輯器中節點無法拖動的問題
    • 修復節點 _localZOrder 數據保存時持續變化的問題
    • 修復編輯器選中節點后鍵盤方向鍵無法微調位置的問題
    • 修復場景編輯器選中節點后不會在層級管理器中自動定位的問題
    • 修復節點樹在刪除節點后自動展開的問題
    • 修復 inspector 面板中點擊節點層級管理器不會自動定位的問題
    • 優化 Console 自動滾動體驗
    • 修復切換父節點 active 狀態時所有子節點全部展開的問題
    • 修復點擊 Hierarchy 節點時的閃動問題
    • 修復 Auto Atlas 預覽失效問題

    Engine Fixes

    • 修復 Spine 動畫的渲染問題
    • 修復 shader 精度導致的動畫抖動
    • 修復節點 inactive 狀態下設置屬性對 Sprite 影響不生效的問題
    • 修復 Tiled 類型 Sprite 在貼圖旋轉情況下的渲染錯誤
    • 修復開放數據域中背景無法透明的問題
    • 修復 Graphics 頂點數過多時的渲染錯誤
    • 修復 Camera 縮放后部分位置不響應事件的問題
    • 修復 Camera 縮放后 Tilemap 的剪裁問題
    • 修復 RichText 子節點的復用導致的狀態錯誤
    • 修復 IE11 支持
    • 修復 qqplay 不支持 base64 格式的 Particle 貼圖問題
    • 修復 Spine 調試插槽在 Release 版本不可用的問題
    • 修復各個平臺前后臺切換事件的問題
    • 修復 Label 在切換為 BMFont 類型時由 blend function 導致的渲染錯誤
    • 修復 qqplay 平臺在 Android P 系統下的黑屏
    • 修復 Windows 平臺 XMLHttpRequest GET 結果為 timeout 的問題
    • 修復 AudioClip 不支持延遲加載的問題
    • 補充缺失的 deprecation API,修復發現的 API 文檔問題
    • 修復多個 Mask 共存時 Stencil 會被最后一個 Mask 覆蓋的問題
    • 修復開放數據域中 Mask 組件的黑邊問題
    • 修復 Mask 使用 image stencil 時不支持延遲加載的問題
    • 修復 Spine 在非調試模式下無法顯示調試插槽的問題
    • 修復 Native 平臺在勾選 MD5 時音頻無法播放的問題
    • 增強 Particle 資源的容錯,支持 effecthub 導出的資源格式
    • 修復 resume 可以直接播放未播放過的音頻的問題
    • 修復包含 Mask 模塊并剔除 Graphics 模塊時導致的 Graphics 缺失問題
    • 修復 Native 平臺按鈕在 active 為 false 時仍然可以收到觸摸事件
    • 修復 Web 平臺 VideoPlayer 切換 visibility 時視頻沒有隱藏的問題
    • 修復 windows & mac 模擬器窗口大小改變時不會自動適配的問題
    • 修復 Tilemap parser 的解析問題
    • 修復 Camera 使用 RenderTexture 截圖時不支持 mask 的問題
    • 修復多個 Graphics 互相切換時導致的報錯
    • 修復粒子系統中粒子最后消失時最終 alpha 無效的問題(不透明)
    • 優化細小的文字渲染在 Native 平臺上的表現
    • 修復安卓平臺返回鍵的監聽失效
    • 修復 iOS 平臺彈出輸入框后點擊輸入框會消失的問題
    • 修復 iOS 平臺輸入中文字符時的亂碼問題
    • 優化輸入框的完成按鈕設計
    • 修復微信小游戲中輸入表情圖異常的問題
    • 優化 TiledTile 的 API 設計(不允許設置 layer,自動獲?。?/li>
    • 修復六邊形 TileMap 使用 TiledTile 時的偏移問題
    • 修復原生平臺 FileUtils writeStringToFile 調用時崩潰問題 

    REMOVED & DEPRECATION

    v1.x 的大量私有以及非核心 API 被移除或廢棄,詳細內容可以參考升級指南.

    相關資源

    2018.08.03

    V2.0.0

    發布時間: 2018.08.03

    經歷了大規模的底層重構和為期兩個月的穩定性迭代,Cocos Creator v2.0 終于和大家見面了??傮w上來說,Cocos Creator v2.0 設計的核心目標有兩點:

    • 在 Web 和小游戲平臺,大幅提升引擎基礎性能
    • 提供更高級的渲染能力和更豐富的渲染定制空間

    為了完成這個目標,我們徹底重寫了底層渲染器,從結構上保障了性能的提升和渲染能力的升級。同時,為了保障用戶項目可以更平滑得升級,我們幾乎沒有改動組件層的 API。當然,這些改動并不是對用戶完全透明的,比如引擎加載流程、事件系統、引擎整體 API 的精簡和重組,這些都會帶來對用戶層 API 的影響,我們希望通過升級指南、文檔和 deprecation 信息等方式幫助大家升級。

    編輯器

    • 實現了 Texture 的 premultiply alpha,filter mode,wrap mode 配置
    • 將混合模式配置抽象到 RenderComponent 組件基類中,所有渲染組件都可以配置
    • Camera 組件升級,作為直接的渲染入口,可配置各項基礎渲染參數
    • 集成 Quick Compile,自定義引擎只需要使用菜單的 “開發者選項” -> “編譯引擎” 可在幾秒內快速編譯完成
    • 將微信小游戲開放數據域獨立為一個發布平臺,擁有獨立的發布面板

    引擎

    • 添加基于 3D 引擎的新渲染器
    • 渲染組件實現全面升級
    • 徹底移除渲染樹,由渲染組件直接組裝渲染數據并提交渲染
    • 精簡 cc 命名空間 API
    • 精簡 Director API
    • Camera 組件升級
    • 啟動流程升級,用戶腳本和插件腳本可以更容易干預引擎初始化
    • 平臺相關啟動代碼獨立分離,更易于定制
    • 事件系統優化,區分節點樹上通過捕獲冒泡機制派發的系統事件和直接派發的普通事件
    • Fit Width & Fit Height 同時勾選的適配模式兼容微信小游戲平臺
    • 正式增加了 RenderTexture 資源類型,可以保存攝像機中截取的渲染內容
    • 簡化 TiledMap 功能,為后續的升級做鋪墊
    • 物理引擎升級,性能優化

    REMOVED & DEPRECATION

    •  v1.x 的大量私有以及非核心 API 被移除或廢棄,詳細內容可以參考升級指南和 [deprecated.js]

    相關資源

    KNOWN ISSUES

    • 目前 2.0 版本存在著在原生平臺上引擎渲染性能可能下降的情況,對特定的游戲可能會有較明顯的影響,建議開發中的原生平臺項目謹慎升級。我們后續會進行優化。
    2018.08.13

    V1.10.1

    發布時間: 2018.08.13

    v1.10.1 是對不久前發布的 v1.10.0 的缺陷修復,建議所有 1.10 用戶及時更新版本。該版本不是 2.0 的替代版本,2.0 仍然是目前的最新版,新項目仍然建議直接上 2.0。作為 2.0 之前的最后一個大版本,我們會盡量維護到穩定為止,以支持暫時無法升到 2.0 的用戶。良好的品質離不開用心的打磨,非常感謝各位開發者通過論壇、GitHub、Cocos 技術服務等渠道反饋的意見。讓我們共同期待即將發布的 2.0.1!

    Editor

    • 修復微信子包相關問題
    • 修復項目構建后 project.js 可能為空的問題
    • 修復 QQ 玩一玩構建報 bkgame 相關錯誤
    • 修復項目中包含大量碎圖時,刷新預覽或者預覽時保存場景會導致編輯器卡頓的問題
    • 修復構建面板不勾選“Source Maps”時,微信開發者工具報錯
    • 修復啟用 MD5Cache 以后,vConsole 不顯示的問題
    • 修復 mac 平臺偏好設置內無法選取 .app 程序的問題
    • 動畫編輯器上增加了新建 clip 的按鈕
    • 層級管理器細節完善

    Engine

    • 修復 audioEngine 的 isLoop 始終返回為 false 的問題
    • 修復 Label 組件在使用 TTF 字體的情況下,文本高度發生偏移的問題
    • 完善 QQ 玩一玩下的 EditBox 的文本顯示
    • 修復安卓視頻播放相關問題
    2018.07.31

    V1.10.0

    發布時間: 2018.07.31

    v1.10 版本相比 v1.9 新增了大量特性,重構了引擎的資源部分,大幅度優化了 settings.js 文件的體積。此外,1.10 還在微信小游戲及 Web、原生平臺上都支持了游戲代碼分包功能。這樣一來便能夠突破微信首包 4MB 的限制,并且提升游戲載入速度,詳見[代碼分包加載]。與此同時,1.10 對不少編輯器代碼進行了重寫,提升了編輯器的使用體驗和性能。
    如果您的項目計劃升級到之后的 v2.0,請提前升級到 v1.10,這樣能保證整個升級過程盡量平滑。

    資源升級

    從 10 開始,Cocos Creator 對底層資源類型進行了重構,大多數項目不受影響,但有些項目可能會收到一些警告,詳情請查閱[v1.10 資源升級指南]。

     編輯器

    • 大幅優化發布后的js 文件體積。
    • 在文件夾對應的屬性檢查器中添加了腳本分包設置。
    • 允許每個項目單獨設置自定義引擎。
    • 在層級管理器中增加節點鎖定功能,當鼠標移到節點上,左側會有一個鎖定按鈕,節點鎖定后無法在場景編輯器內選中該節點。
    • 在 Prefab 資源文件的屬性檢查器中,增加了“優化策略”選項,用于優化 Prefab 創建時間。詳見預制資源:設置優化策略。
    • 優化 Windows 下的主菜單。
    • 為構建面板中的場景列表增加自動刷新功能。
    • 發布到原生平臺時,同樣支持在文件命名中添加 MD5,方便進行熱更新。
    • 腳本編譯將自動跳過所有 .d.ts 文件,避免 TypeScript 報錯。
    • Console 面板增加了 Clear on Play 選項,用于在游戲預覽前,自動清空日志。
    • 調整 Console 面板的文本字體和顏色。
    • 在層級管理器和資源管理器的搜索欄中加入了搜索選項按鈕。
    • 在插件商店中新增了已裝插件管理功能。
    • 允許更改控件庫中的自定義控件圖標。
    • 資源管理器增加對 aac 和 pcm 擴展名音頻文件的識別。
    • 支持在資源管理器搜索 uuid 時直接搜索壓縮后的 uuid 格式。
    • 允許使用鼠標右鍵拖拽 Timeline 編輯器的時間軸。
    • 在 Dashboard 的系統托盤圖標上增加了退出菜單。

     引擎

    • 支持游戲腳本分包加載,詳見[代碼分包加載]。
    • Widget 組件新增 align mode 屬性,設置為 ON_WINDOWS_RESIZE 后將在窗口大小改變時自動刷新。
    • 正式支持了[文本][JSON] 資源類型的加載。
    • 原生平臺增加了 [cc.sys.getBatteryLevel] 和 [cc.sys.getNetworkType] 接口,用于獲取設備電量和網絡狀態。
    • 原生平臺熱更新時,將會主動把舊版的資源文件刪掉。
    • VideoPlayer 增加音量調節和靜音功能。
    • 增加 DragonBones 原生平臺綁定接口 getSlots , replaceSlotDisplaySlot.name (感謝 @feijing566)。
    • TiledMap 支持 Web 平臺上任意方向的正交(ortho)地圖的渲染裁剪。
    • Layout 組件將只對 active 的節點進行排版。
    • 默認在安卓 UC 瀏覽器上啟用 retina 渲染。
    • 在 UC 瀏覽器 11 版本以上啟用 Webgl。
    • 增加對 UCBS 瀏覽器的識別。
    • 重力感應調整為只在開發者有注冊事件時才進行獲取。

     Bug Fixes

    • [Editor] 修復設置圖集中的 SpriteFrame 時的卡頓。
    • [Editor] 修復模擬器配置保存相關問題。
    • [Editor] 修復模擬器輸出到 Console 的錯誤信息顯示成白色的問題。
    • [Engine] 修復資源導出工具在遇到相同的父文件夾名時的錯誤。
    • [Engine] 修復編輯器下拷貝自動同步的 Prefab 子節點可能出錯的問題。
    • [Engine] 修復構建時自動圖集中的碎圖紋理如果直接被其它資源引用,將會報錯的問題。
    • [Engine] 修復插件腳本未正確解析 CC_WECHATGAME 和 CC_QQPLAY 關鍵字的問題。
    • [Engine] 修復場景切換或者節點銷毀時,動畫可能沒有停止播放的問題。
    • [Engine] [Wechat] 修復某些版本的微信小游戲獲取每幀間隔時間的問題。
    • [Engine] [Wechat] 修復安卓微信小游戲上的 RenderTexture 相關問題。
    • [Engine] [QQPlay] 修復 QQ 玩一玩上資源會重復下載的問題。
    • [Engine] 修復 Slider 組件的滑塊拖動時位置可能不對的問題。
    • [Engine] 修復音頻的 load 事件有可能重復觸發的問題。
    • [Engine] 修復用戶在 deactivate 節點的同時改變層級的話,沒有任何報錯的問題。
    • [Engine] 修復 WebView 在一些平臺上的 Safari 瀏覽器中無法隱藏的問題(iOS 9/10 或 Mac)。
    • [Engine] 修正原生平臺 BMFont 渲染間距問題。
    • [Engine] 修復在 Canvas 在未勾選 Fit Width 和 Fit Height 時按鈕的觸摸區域會發生偏移的問題。

    升級安卓 SDK

    從 v1.10 開始,安卓構建面板中的 API Level 指定的是編譯出的 apk 所支持的最低 Android 版本,建議選擇 14。 targetSdkVersion 、 compileSdkVersion 、 buildToolsVersion 都升級到了 26。
    如果開發者有其它需要,可以手動修改 proj.android-studio/app/build.gradeproj.android-studio/gradle.properties 。

    REMOVED

    • 移除了 Eclipse 和 Ant 構建安卓平臺的支持。
    • 移除了 Chipmunk 的支持。
    • 移除了loader.loadRes 直接加載圖集中的子 SpriteFrame 的支持,請先加載圖集再調用 atlas.getSpriteFrame(name) 。

    DEPERCATION

    • 10.0 起,不再推薦使用 Texture2D.releaseTexture,請用 Texture2D.destroy 代替。
    • 8.2 起,不再推薦使用 cc.eventManager,請用 cc.EventTarget 或 cc.systemEvent 代替,原有 API 將在 2.0 移除。
    • 8.2 起,不再推薦使用 cc.inputManager,請用 cc.systemEvent 的相同接口代替,原有 API 將在 2.0 移除。
    • 8.2 起,不再推薦使用 dragonBones.CCFactory.getFactory,請用 dragonBones.CCFactory.getInstance 代替,原有 API 將在 2.0 移除。

     KNOWN ISSUES

    • 在資源管理器中復制粘貼資源時,資源屬性仍不會跟著拷貝。(Since 1.9.0)
    • 安卓原生平臺不支持播放遠程視頻。
    2018.07.06

    V1.9.3

    發布時間: 2018.07.06

    v1.9.3 是對不久前發布的 v1.9.2 的缺陷修復,主要完善了對微信小游戲及 QQ 玩一玩的支持,建議所有 1.9 用戶及時更新引擎版本,獲得更好的體驗。良好的品質離不開細心的打磨,非常感謝各位開發者通過論壇、GitHub、Cocos 技術服務等渠道提交的 BUG 反饋。

    動畫編輯器

    • 修復動畫編輯器保存動畫時,數據有可能不全的問題
    • 修復動畫編輯器直接編輯 Texture 動畫會報錯的問題
    • 修復動畫編輯器無法添加 size 下的 width 以及 height 屬性的問題

    微信小游戲

    • 修復在微信小游戲上只能播放單個音頻并且音頻播放次數有限的問題
    • 修復微信小游戲音頻無法停止的問題
    • 修復 Android 微信小游戲重力感應方向和取值不對的問題
    • 修復微信小游戲中無法提交 TypedArray 格式貼圖的問題
    • 修復在舊版微信上幀率顯示異常的問題
    • 完善微信小游戲視頻播放支持
    • 向下兼容微信小游戲 1.7.4 版本基礎庫

    QQ 玩一玩

    • 修復 QQ 玩一玩上只能播放單個音頻并且音頻播放次數有限的問題
    • 修復 QQ 玩一玩上游戲加載過程中無法操作引擎對象的問題
    • 修復 QQ 玩一玩粒子播放卡死問題
    • 修復 QQ 玩一玩上半透明文本會渲染成黑色的問題

    DragonBones

    • 修復 DragonBones 在原生平臺上重復賦值骨骼可能會導致崩潰的問題
    • 修復手動 clear DragonBones 的 TextureData 會報錯的問題

    其它

    • 修復 Web 和安卓平臺的文本框 Input Flag 無效的問題
    • 修復 Label 渲染有關問題
    • 修復 cc.game 的 EVENT_HIDE 和 EVNET_SHOW 回調可能會被多次調用的問題
    2018.05.31

    V1.9.2

    發布時間: 2018.05.31

    v1.9.2 是對不久前發布的 v1.9.1 的小幅升級,主要提升了對微信小游戲及 QQ 玩一玩的支持,建議所有需要上微信小游戲或 QQ 玩一玩的項目進行升級。

    • 該版本修復了之前 ZERO 混合模式無效的問題,如果升級后發現有圖片顏色不對,請檢查 Sprite 組件的混合模式是不是被設成了 ZERO,是的話改回默認值即可。
    • 該版本重寫了動畫編輯器,如果有遇到相關錯誤,麻煩到論壇反饋,我們會盡快進行修復。

    Features

    • [Editor] [Timeline] 動畫編輯器可對 “丟失的節點” 進行編輯,并且允許遷移節點數據;
    • [Editor] [Timeline] 動畫編輯器支持同時復制粘貼多個節點上的關鍵幀;
    • [Editor] [Timeline] 動畫編輯器若干體驗優化;
    • [Editor] 將 QQ 玩一玩和微信小游戲的適配層代碼放置到編輯器的 Contents/Resources/builtin 目錄下,方便用戶升級;
    • [Engine] 升級 Facebook Instant Games SDK 到 6.2;
    • [Engine] 優化 Label 在非原生平臺的內存占用。

    微信小游戲

    • 修復微信小游戲 AudioSource 組件在銷毀時可能會報錯的問題;
    • 優化微信小游戲上聲音的實現;
    • 在微信小游戲的 game.json 中改用 `openDataContext` 定義開放數據域,開放數據域的入口文件改為 `index.js`;
    • 修復微信開放數據域中加載遠程資源的問題;
    • 修復微信小游戲上加載 plist 粒子時可能會出現的報錯;
    • 修復微信小游戲中調用 cc.RenderTexture.create 導致的 gl.texImage2D 報錯;
    • 修復在舊版本上微信獲取微信小游戲開放數據域時的報錯;
    • 允許在微信小游戲的開發者工具上模擬通過 `cc.sys.os` 獲取的系統信息;
    • 修正在舊版本微信上無法正確識別子域的問題。

     QQ 玩一玩

    • 優化 QQ 玩一玩上聲音的實現;
    • 修復 QQ 玩一玩在 iOS 10 以下藍屏的問題;
    • 修復 QQ 玩一玩上加載 plist 粒子時可能會出現的報錯;
    • 修復在 Windows 下發布到 QQ 玩一玩 時插件腳本加載異常;
    • 完善 QQ 玩一玩的 XMLHttpRequest 的 header 處理;
    • 完善 QQ 玩一玩的 userAgent;
    • 修正 QQ 玩一玩文本描邊效果。

    Bug Fixes

    • [Editor] 修復 AudioSource 和 MotionStreak 組件的文檔鏈接;
    • [Editor] 修復編輯器預覽動畫時,如果動畫對節點的 active 進行修改有可能報錯的問題;
    • [Editor] 修復在登錄服務器宕機時無法進入編輯器的問題;
    • [Editor] 修復多次拖到同一個 prefab 作為其它 prefab 的子節點會報錯的問題;
    • [Engine] 修復 Web 平臺上無法將 Sprite 的 blend mode 設置為 ZERO 的問題;
    • [Engine] 修復了 cc.sequence 中嵌套其它調用過 repeat 方法的 action 時在特殊情況下會導致速度不正常的問題;
    • [Engine] 修復場景切換后可能導致 Sprite 報錯的問題;
    • [Engine] [JSB] 解決在 JS 層創建 cc.GLProgram 并添加進 cc.shaderCache 后出現觸發斷言的問題;
    • [Engine] [JSB] 修復原生平臺物理引擎綁定問題;
    • [Engine] [Native] 修正原生平臺上 cc.Sprite.FillType 枚舉類型錯誤;
    • [Engine] [UI] 修復當滾動視圖同時啟用垂直、水平滾動,并且內部尺寸過小時可能引起的定位問題;
    • [Engine] [Audio] 修復重復調用 audioEngine.resume 會從頭播放的問題。
    2018.04.20

    V1.9.1

    發布時間: 2018.04.20

    v1.9.1 版本是對不久前發布的 v1.9.0 的一次小幅升級,主要提升了對微信小游戲及 QQ 玩一玩的支持。

    微信小游戲

    • 支持將整個項目發布到微信小游戲子域,詳見文檔。
    • 支持微信小游戲在構建面板中配置 “遠程服務器地址” 選項,方便下載遠程資源
    • 支持在微信小游戲真機上使用 TTF 字體
    • 把微信小游戲的適配層從 ES6 轉成 ES5,用戶可以不啟用 ES6 轉 ES5
    • 修復微信小游戲中潛在的音頻內存泄漏

    QQ 玩一玩

    • 支持 QQ 玩一玩在構建面板中配置 “遠程服務器地址” 選項,方便下載遠程資源
    • 修復 QQ 玩一玩上 XMLHttpRequest 的一些小 bug
    • 修復 QQ 玩一玩構建時無法解析 js 路徑的問題
    • 完善 QQ 玩一玩上多點觸摸的支持
    • 增加 QQ 玩一玩對 base64 編碼圖片的支持
    • 完善 QQ 玩一玩適配層
    • 完善 QQ 玩一玩的音頻支持
    • 修復 QQ 勾選 MD5 Cache 后的黑屏問題

    其它更新

    • [Editor] [Build] 修復定制項目構建模板功能在 Facebook Instant Games 平臺不生效的 bug
    • [Editor] [Build] 添加 build-start 事件,方便用戶構建之前做一些自己想要做的處理
    • [Engine] [Wechat] 修復微信小游戲音頻無法停止的問題
    • [Engine] [iOS] 修復 iOS 8-9 上面 isTypedArray 方法失效的問題
    • [Engine] [Web] 修復粒子系統還未激活就移除的話會導致內存泄露問題
    • [Engine] cc.isValid 增加了一個可選參數,傳入 true 將在 destroy 的當幀開始就返回 false
    • [Engine] [Android] 修復 jni 上的一個內存泄露問題

     DEPRECATION

    • v1.8.2 起,不再推薦使用 cc.eventManager,請用 cc.EventTarget 或 cc.systemEvent 代替,原有 API 將在 2.0 移除。
    • v1.8.2 起,不再推薦使用 cc.inputManager,請用 cc.systemEvent 的相同接口代替,原有 API 將在 2.0 移除。
    • v1.8.2 起,不再推薦使用 dragonBones.CCFactory.getFactory,請用 dragonBones.CCFactory.getInstance 代替,原有 API 將在 2.0 移除。

    KNOWN ISSUES

    在資源管理器中復制粘貼資源時,資源屬性仍不會跟著拷貝。(Since 1.9.0)

    QQ 玩一玩已知問題:

    目前 QQ 玩一玩仍在灰度測試中,開發者也需要獲取內測資格才能進行開發,而且暫時僅支持在 Mac 上進行編譯。此外,我們對 QQ 玩一玩的適配工作還未完全結束,目前仍不支持以下模塊:

    • Label:不支持 TTF,系統字體也只能使用默認字體
    • 粒子系統:不支持 plist 中存儲貼圖數據,只支持貼圖 URL
    • WebView
    • VideoPlayer
    • DeviceMotion

    以上功能預計在以后的更新中逐個支持。我們也將持續與玩一玩工程師們緊密溝通,不斷優化適配效果。

    2018.03.14

    V1.9.0

    發布時間: 2018.03.14

    美國時間 3 月 14 日 Facebook 正式對外開放 Instant Games 平臺,給所有開發者一個公平的機會可以進入和拓展海外市場。Cocos 引擎作為 Facebook Instant Games 平臺的官方合作伙伴,不僅僅在技術接入方面深度合作,游戲開發上支持一鍵發布游戲;在內容引進方面,更是國內首家 Facebook 官方授權的 Instant Games 游戲接入合作商。所以本次發布的 v1.9.0 正式版本既是對  v1.8.2 的一次功能更新,提升了編輯器的易用性,修復了一些功能缺陷,更主要增加了 Facebook Instant Games 及 QQ 玩一玩的支持,該版本目前已經完整實現三大平臺一鍵平滑支持。建議所有開發中的項目進行升級。

     Features

    • 支持 Facebook Instant Games [詳見文檔]
    • 支持 QQ 玩一玩
    • [Editor] 資源管理器直接支持復制粘貼資源(可通過右鍵菜單或快捷鍵)
    • [Editor] 在場景編輯器的 Rect 編輯模式下,支持拖動節點的空白區域,便于更改 anchor 的值
    • [Editor] 在粒子組件的屬性檢查器上新增 “同步” 按鈕,點擊同步將把 Custom 參數設為和 File 一致。(同步按鈕僅在勾選 Custom 并且設置了 File 時才可用)
    • [Editor] 在 Timeline 中增加 scale 屬性,便于同時編輯 scaleX 和 scaleY
    • [Engine] PhysicsManager 新增 FIXED_TIME_STEP 和 MAX_ACCUMULATOR 兩個參數

    Bug Fixes

    • [Engine] [Web] 修復在部分小米自帶瀏覽器上輸入框無法彈出的問題
    • [Engine] 修復勾選 MD5 構建后音頻可能無法停止的問題
    • [Engine] 修復 Label 的描邊可能被截斷一個像素的問題
    • [Engine] 修復 cc.Class 構造函數中的異常無報錯信息的問題
    • [Engine] [Animation] 修復當 Animation 組件切換動畫或手動設置 AnimationState 時間后,會少播放一幀的問題
    • [Engine] [Wechat] 修復 iOS 微信小游戲本地代碼包超過 4MB 后使用遠程服務加載會失敗的問題

    DEPRECATION

    • v1.8.2 起,不再推薦使用 cc.eventManager,請用 cc.EventTarget 或 cc.systemEvent 代替,原有 API 將在 2.0 移除。
    • v1.8.2 起,不再推薦使用 cc.inputManager,請用 cc.systemEvent 的相同接口代替,原有 API 將在 2.0 移除。
    • v1.8.2 起,不再推薦使用 dragonBones.CCFactory.getFactory,請用 dragonBones.CCFactory.getInstance 代替,原有 API 將在 2.0 移除。

    KNOWN ISSUES

    • 在資源管理器中復制粘貼資源時,資源屬性仍不會跟著拷貝。(Since 1.9.0)
    • 在原生平臺上,調用 action.easing(cc.ease) 方法的話,可能會引起節點邏輯數據不同步。請改用 cc.ease(action)。(Since 1.8.2)

    QQ 玩一玩已知問題:

    目前 QQ 玩一玩仍在灰度測試中,開發者也需要獲取內測資格才能進行開發,而且暫時僅支持在 MacOS上進行編譯。此外,我們對 QQ 玩一玩的適配工作還未完全結束,目前仍不支持以下模塊:

    • Label:不支持 ttf,系統字體也只能使用默認字體
    • 粒子系統:不支持 plist 中存儲貼圖數據,只支持貼圖 url
    • WebView
    • VideoPlayer
    • DeviceMotion

    其他詳細功能請參考 v1.8.2 功能列表。以上暫未支持功能預計在今后的更新中逐個實現,我們也將持續與玩一玩工程師們緊密溝通,不斷優化適配效果。

    久久精品麻豆日日躁夜夜躁_久久精品水蜜桃AV综合天堂_久久精品夜色国产按摩推油_综合 ww在线观视频国产免费观看Aa 丰满的少妇高潮呻吟声色欲av 日本伊人久久久久久精品网 超碰caoporon最新 好男人www官网在线观看视频 天堂午夜www爆乳肉动漫 好硬好大好爽18禁免费看www XXXXX又粗又大又爽毛片 旗袍制服白丝自慰无码自慰 国产乱人伦精品一区二区乐播 欧美另类丰满熟妇XXXX 中国帅男同志大学生打飞机 极品少妇喷潮视频无码免费播放 麻豆婷婷狠狠色18禁久久 中文字幕无码免费久久6080 老熟女五十路乱子中出一区折原 东北BBW揉BBBB揉BBBB 天天躁日日躁狠狠躁中文字幕老牛 97色老99久久九九爱精品 18禁止无遮挡啪啪无码高潮 少妇中文字幕乱码精品视频 两根一进一出啊灌满了白浆 天干天干天啪啪夜爽爽AV 男女裸体激情无遮挡xo动图 美女露出奶头扒开屁股让男人桶爽 顶级嫩模啪啪呻吟不断好爽 国产精品久久一区二区三区色猫咪 亚洲妇熟XXXX妇色黄网站 丰满熟妇裸体BBMXXXX 美女黄网站永久免费观看网 cao死你好湿好紧好爽免费视频 欧美成在人线免费观看天堂 欧美 国产 亚洲 另类 稀缺 伊人蕉影院久亚洲高清老司机 国产黑色丝袜视频在线观看出水 少妇护士放荡激情嗯啊A片 哟男哟女视频精品八区免费 精品女厕偷拍视频一区二区 4399日本在线观看免费6 久久精品麻豆日日躁夜夜躁 撕开奶罩揉吮奶头A片国产 国产精品白浆无码浪潮AV 动漫AV无码成H人动漫在线观看 2012视频免费观看大全 衣服被扒开强摸双乳直播视频 国产裸体美女永久免费无遮挡 性欧美丰满BBBBBAAAAA 中文字幕乱码亚洲∧V加勒比 美女扒开内裤让男人桶涩爱AV 5060网午夜免费午夜一级 大爆乳老师双腿张开自慰喷水 中文字幕久久久人妻无码99 性BBBB交ZOZO欧美 丰满少妇被弄高潮大叫AAA 美女视频黄道一个人免费2 国产精品jk白丝喷浆色哟哟 人妻av中文系列制服丝袜另类 一本大道香蕉中文在线w乱人伦 欧美黑人精品一区二区不卡 久久久久久久久久综合日本 <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>