Cocos Creator v2.2 正式發佈

640?wx_fmt=jpeg

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

詳細更新列表如下,爲提高閱讀體驗,《參考鏈接》統一放在文末!

What's New

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

在此版本中,我們對渲染引擎進行了大幅度升級,在原生平臺上實現了巨大的性能提升,不僅完勝了所有 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 時的卡頓也大大減輕,實際體驗將更加流暢。

下面是詳細性能數據:

640?wx_fmt=png

640?wx_fmt=png

 

支持 3D 模型渲染合批

 

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

 

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

 

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

 

640?wx_fmt=png

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

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

 

支持環境光設置

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

 

640?wx_fmt=png


進一步提升 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 倍。

 

下面是詳細數據:

 

640?wx_fmt=jpeg

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

640?wx_fmt=jpeg

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

640?wx_fmt=jpeg

Web 加速模式性能測試結果

 

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

升級 Spine 運行庫到 3.7

  • 支持 Spine 局部換裝,使用方法可參考《Spine 組件參考:Spine 換裝,使用案例詳見引擎自帶範例中的 SpineSkin。

  • 支持 Spine 頂點效果,使用方法可參考Spine 組件參考:Spine 頂點效果,使用案例詳見引擎自帶範例中的 SpineMesh。

大幅增強 TiledMap支持

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

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

 

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

 

640?wx_fmt=gif

Release Notes

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

  • 修復退出 Prefab 編輯模式後,預覽時無法獲取場景名的問題

  • 修復退出 Prefab 編輯模式後,場景編輯器中的 3D 節點可能會顯示錯亂的問題

  • 修復在動畫編輯狀態下刪除了正在編輯的動畫剪輯,動畫編輯器將會報錯的問題

Engine

  • 修復使用 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 無法全屏的問題 [#4845]

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 將會有適配問題,目前暫時需要手動參考 [#1930] 對引擎進行適配。

  • 部分舊項目參考了論壇 https://forum.cocos.com/t/topic/79780 的方案,在 iOS 和 Android 上實現了屏幕旋轉,該方案在 v2.2.0 上暫時失效。目前手動參考 [#1930] 對引擎進行適配就可解決。

  • Mac 平臺的部分機器上會出現 Label 在 CHAR 模式下文字偶現白色邊框的情況,該問題影響面很小,會在 2.2.1 修復。更多後續版本計劃,可以參考 Roadmap: https://trello.com/b/JWVRRxMG1 。

升級說明

  • 打開 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();

更多精彩

從 v2.0.0 用 3D 渲染器重寫底層至今,Cocos Creator 經過多個版本的穩步迭代,終於進化成了一款能無損兼顧純 2D 和 3D 兩種項目類型的遊戲引擎。將來 Cocos Creator 仍會秉承“2D 優先”的理念,繼續死磕 2D 遊戲開發體驗及基礎性能,逐步引入那些適合融入 2D 遊戲的 3D 特性,陪伴 2D 遊戲團隊共同成長。

最後感謝所有幫助 2.2 進行公測的開發者們,感謝所有提前升級並驗證 2.2 內部版本的開發團隊!

640?wx_fmt=png

640?wx_fmt=jpeg

640?wx_fmt=png

我就知道你“在看”▼

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