Cocos Creator 2.3.0 更新說明

Hi,各位開發者,經過長時間的開發和準備,Cocos Creator 2.3 在今日終於正式發佈啦。這個版本不僅移植了 Cocos Creator 3D 中的物理、碰撞和 3D 粒子系統,還升級到了和 3D 引擎一致的正式版本材質系統,能夠勝任更多品類的遊戲開發!

從 v2.0 用 3D 渲染器重寫、v2.1 開放 3D 能力至今,Cocos Creator 缺失的 3D 能力已經在迭代中逐步補齊。我們希望能夠幫助中小團隊開發出驚豔的 3D 休閒項目,並且保留 Creator 做爲 2D 引擎輕量高效的優勢,這是現階段 Cocos Creator 和 Cocos Creator 3D 的主要區別。與此同時,與 3D 引擎更多模塊的統一,也是 2D 和 3D 兩個產品線完全融合的開始。在不久的將來,Cocos Creator 將會整合兩個引擎的優點,提供卓越的 2D/3D 遊戲開發體驗。

以下是 2.3 完整更新說明。爲保證閱讀體驗,[參考鏈接]統一放在文末哦~

 

重點更新 


1.支持發佈到趣頭條小遊戲

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

 

2.支持 3D 物理系統

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

3.支持 3D 碰撞系統

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

 

4.支持 3D 粒子系統

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

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

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

詳細說明請參考文檔[3D粒子]。

 

5.升級材質系統到正式版

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

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

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

詳細說明請參考文檔[材質系統][Effect]

 

6.支持 Spine 與 DragonBones 掛載節點

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

 

 

7.支持 Spine 二進制資源格式

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

 

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

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

 

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

 

 

10.其它重要特性

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

 

Improvements

 

Engine

  • 優化節點設置 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

  • 場景編輯器支持使用 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 對項目的升級操作是不可逆的,請在升級前提交或備份舊版項目。開發中的項目通常可無縫升級,但因爲項目難免存在特殊性,開發者應該根據項目自身需求,進行新版本引擎進行技術評估。

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

 

1.從 < 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.從 2.0 - 2.3.0 版本升級

  • 從 2.3.0 開始,Canvas 組件不再負責將 Canvas 節點尺寸設爲屏幕大小,此行爲將結合 Widget 組件實現。爲保證兼容性,2.0 項目升級後,Canvas 所在節點會自動添加 Widget 組件。(從 1.0 項目升級無此問題)

 

3.從 < 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();

 

4.從 < 2.0 版本升級

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

 

以上就是  Cocos Creator 2.3.0 此次更新的詳細內容,我們歡迎大家繼續提供反饋,以便更好地爲你們服務。

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