<output id="5lppn"><del id="5lppn"><mark id="5lppn"></mark></del></output>
Cocos Creator 3.0 迎來了面向未來的下一代引擎底層架構及諸多重大更新,標志著 Cocos 邁向了一個全新的征程。做為 Creator 之后的主力版本,v3.0 延續了 Cocos 在 2D 品類上輕量高效的優勢,并且為 3D 重度游戲提供了完整高效的開發體驗。
3.6.2
04 Nov 2022

重點更新

  • 優化原生 Spine/DragonBones 性能 #12788。我們在 3.6.2 重點優化了原生上 Spine 的運行性能。在 iOS 較低端設備上最大達到了 40% 以上的性能提升。在 Andr
3.6.1
23 Sep 2022

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

除此之外,Cocos Creator 的官方 XR?內容開發插件?Cocos?CreatorXR?也已適配 3.6.1。它在底層通過支持 OpenXR 標準協議來抹平不同 XR 設備之間的差異,可以一站式對創作內容進行開發并

3.6.0
17 Aug 2022

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

重點更新

在 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` 該路徑下的工程
收起
3.5.2
22 Jun 2022

編輯器更新

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

引擎更新

編輯器更新

  • 修復嵌套預制體修改屬性時可能報錯的問題
  • 修復材質預覽初始化寬高非整數導致的報錯
  • 修復腳本讀取 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)
收起
3.5.1
01 Jun 2022

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

重要更新

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)
收起
3.5.0
06 May 2022

重要更新

Marionette 動畫系統

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

重要更新

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)
收起
3.4.2
10 Mar 2022

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

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

3.4.1
25 Jan 2022

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

在 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]

收起
3.4.0
20 Dec 2021

版本介紹

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

在 v3.4 中不僅增加了像

3.3.2
11 Oct 2021

Hightlight

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

引擎的有些功能依賴 C++17,有些功能對 Android API 有要求。為了方便開發者使用,編輯器的功能配置界面對于這些依賴進行了提示。比如,Android 使

3.3.1
17 Sep 2021

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

編輯器

  • 優化微信字節面板上物理實驗室選項的顯示,新建微信構建任務時,將會默認開啟 Wasm 物理系統。開啟后,將會覆蓋項目設置的物理后端選擇
3.3.0
24 Aug 2021

What's new

性能優化

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

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

收起
3.2.1
10 Aug 2021

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

Improvement

  • Web & 小游戲 2D 渲染性能優化
  • 優化小游戲啟動性能
  • 優化
3.2.0
18 Jun 2021

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

What's new

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

收起
3.1.2
15 Jul 2021

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.1
01 Jun 2021

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

Improvement

  • 新增在資源管理器面板創建 Prefab 資源的功能
3.1.0
12 May 2021

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

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

收起
3.0.1
14 Apr 2021

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

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

收起
3.0.0
07 Feb 2021

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

国产久免费热视频在线观看_国产精品原创巨作AV_国产精品一区第二页_最新