Cocos Creator 是以內(nèi)容創(chuàng)作為核心,實現(xiàn)了腳本化、組件化和數(shù)據(jù)驅(qū)動的游戲開發(fā)工具。 具備了易于上手的內(nèi)容生產(chǎn)工作流,以及功能強大的開發(fā)者工具套件,可用于實現(xiàn)游戲邏輯和高性能游戲效果。
關(guān)于公司:
雅基軟件 —— Cocos 引擎官方團隊,致力于為移動游戲行業(yè)提供先進的技術(shù)和服務(wù), 讓游戲開發(fā)者可以更加專注的進行游戲內(nèi)容創(chuàng)作,并攜手行業(yè)伙伴深度合作, 共建一個開放、務(wù)實的移動游戲生態(tài)。 雅基軟件,于 2011 年 12 月 30 日在中國廈門注冊成立, 憑借深厚的技術(shù)底蘊和多年游戲行業(yè)的經(jīng)驗積累,自主研發(fā)了“Cocos 引擎”系列產(chǎn)品, 包括第二代游戲編輯器 Cocos Creator、全球流行的開源引擎框架 Cocos2d-x 等產(chǎn)品。 Cocos 目前在全球擁有 140 萬的注冊開發(fā)者,30 萬的月活躍開發(fā)者,遍布全球超過 203 個國家和地區(qū), 覆蓋超過11億玩家設(shè)備,采用 Cocos 引擎開發(fā)的游戲覆蓋市面全品類,在移動游戲中國市場份額占比 45%, 全球市場份額占比 30%,是一款優(yōu)秀的開源移動游戲引擎。
官方簡介:
工欲善其事,必先利其器!在長達兩個月的測試后,2.4.0 版本終于來了!在此感謝給予我們寶貴意見和建議的各位小伙伴們!這個版本中包含了許多新的功能與更新,如資源管理系統(tǒng)重構(gòu),Asset Bundle。并優(yōu)化了原生上 Label 渲染的性能,優(yōu)化 Graphic 渲染效果等等。相信全新的 2.4 版本將會讓大家的工作效率更加高效,游戲內(nèi)容更加豐富,游戲體驗進一步提升,建議所有開發(fā)者升級哦!
軟件優(yōu)勢:
一體化編輯器: 包含了一體化、可擴展的編輯器,簡化了資源管理、游戲調(diào)試和預(yù)覽、多平臺發(fā)布等工作。允許設(shè)計師深入?yún)⑴c游戲開發(fā)流程,在游戲開發(fā)周期中進行快速編輯和迭代。支持 Windows 和 Mac 系統(tǒng)。
2D 和 3D: 同時支持 2D 和 3D 游戲開發(fā),具有可滿足您各種游戲類型特定需求的功能。并且深度優(yōu)化了純 2D 游戲的編輯器使用體驗和引擎性能,內(nèi)建了 Spine、DragonBones、TiledMap、Box2D、Texture Packer 等 2D 開發(fā)中間件的支持。
開源引擎:Cocos Creator 的引擎完全開源,并且保留了 Cocos2d-x 高性能、可定制、容易調(diào)試、易學習、包體小的優(yōu)點。
跨平臺: Cocos Creator 深度支持各大主流平臺,游戲可以快速發(fā)布到 Web、iOS、Android、Windows、Mac,以及各個小游戲平臺。在 Web 和小游戲平臺上提供了純 JavaScript 開發(fā)的引擎運行時,以獲得更好的性能和更小的包體。在其它原生平臺上則使用 C++ 實現(xiàn)底層框架,提供更高的運行效率。
JavaScript:您可以完全使用 JavaScript 來開發(fā)游戲,在真機上進行快速預(yù)覽、調(diào)試,對已發(fā)布的游戲進行熱更新。同時支持 TypeScript。
高效的工作流程:Cocos Creator 預(yù)制件是預(yù)配置的游戲?qū)ο螅商峁└咝Ф`活的工作流程,讓設(shè)計師自信地進行創(chuàng)作工作,而無需為犯下耗時的錯誤擔憂。
UI:內(nèi)置的 UI 系統(tǒng)能夠讓您快速、直觀地創(chuàng)建用戶界面。
自定義工具:您可以借助各種您所需工具擴展編輯器功能以匹配團隊工作流程。創(chuàng)建或添加自定義的插件或在插件商店中找到所需資源,插件商店中有上百種能夠幫助您加快項目進程的范例、工具和插件。
新版功能:
支持 Asset Bundle 功能
Asset Bundle 可將工程中的資源按照開發(fā)者的意愿進行模塊劃分,將不同場景不同需求的資源劃分在多個包中,從而可以減少首次下載和加載游戲時所需要的時間,也可以跨項目復(fù)用,用于加載子項目中的 Asset Bundle。
Asset Bundle 還提供了優(yōu)先級,壓縮類型等相關(guān)設(shè)置用于對 Asset Bundle 的包體和加載進行優(yōu)化。
新增 cc.AssetManager 模塊用于資源管理
Asset Manager 是 Creator 在 v2.4 新推出的資源管理器,其具備加載資源,查找資源,銷毀資源,緩存資源,Asset Bundle 等功能。Asset Manager 擁有更好的性能,更易用的 API,更強的擴展性。其主要提供了以下幾點新特性:
支持所有資源的加載與預(yù)加載,預(yù)加載能以更輕量的方式靜默運行,不影響運行效率
支持 Asset Bundle
支持更安全的自動釋放機制,釋放資源時無需考慮其引用情況,避免錯誤釋放資源
支持下載失敗重試,下載優(yōu)先級,下載并發(fā)數(shù)等設(shè)置,可根據(jù)各種情況進行調(diào)整
支持更方便地定制加載流程,實現(xiàn)特殊效果
增加 Label 的混合選項
支持設(shè)置 Lable 的混合選項,可在不同的使用場景下使用不同的設(shè)置以最大化文本渲染性能。詳細請參考 系統(tǒng)文本的混合模式說明 。
原生平臺上使用 FreeType 渲染 Label
提升 Label 初始化速度,Android 提升 5 倍左右,iOS 提升 3 倍
在使用 TTF 字體和 Char 模式時支持 Bold,Outline,Shadow 等效果
支持 Graphic 的抗鋸齒效果
使用 SDF 技術(shù)優(yōu)化 Graphic 的鋸齒問題
支持其他小游戲平臺的壓縮紋理
編輯器進一步支持更多小游戲平臺的壓縮紋理限制,只需在 Mini Game 項添加壓縮紋理格式,即可設(shè)置包括微信小游戲,OPPO 小游戲,vivo 小游戲等多個平臺的壓縮紋理格式。
完善原生熱更新支持 #2312
2.4 進一步完善原生熱更新能力,優(yōu)化了以下內(nèi)容:
添加獲取更新包大小接口
對鏈接添加 MD5 參數(shù),對 CDN 更加友好
解決更新過程中斷導(dǎo)致的資源丟失和錯亂的問題
新增 SafeArea UI 組件
該組件會將所在節(jié)點的布局適配到異形屏手機的安全區(qū)域內(nèi),可適配 Android 和 iOS 設(shè)備
其它新增特性
增加壓縮紋理緩存功能,構(gòu)建之后將壓縮紋理進行緩存,重復(fù)構(gòu)建時將盡量復(fù)用緩存內(nèi)容,加快構(gòu)建速度
在 Web 平臺使用 ImageBitmap 加載圖片,提升預(yù)覽和 Web 平臺圖片解析速度,減少加載時的卡頓
編輯器屬性面板支持拖拽數(shù)組賦值
升級 TypeScript 的版本到 3.9.2
升級原生平臺的 V8 版本到 8.0.426.16
支持導(dǎo)入 GLTF 資源
在所有小游戲平臺支持首場景分包功能
支持預(yù)覽時進行模塊剔除,提升預(yù)覽速度,還能更早暴露錯誤的模塊剔除設(shè)置
Improvements
優(yōu)化 2D 粒子系統(tǒng) free 和 relative 模式的性能 #6236
優(yōu)化 ToggleContainer 獲取 toggleItems 的效率 #6569
提升原生平臺 WebSocket 帶寬 #2353
SpriteFrame 資源增加 None Trim 類型,可快速設(shè)置為無裁剪
完善 jsb 的代碼提示
支持設(shè)置預(yù)覽端口
原生桌面平臺構(gòu)建時可設(shè)置窗口大小
Engine
[CORE]修復(fù) cc.easeBackOut 在 time 為 0 時返回值不正確的問題,#6728,感謝 chen-gaoyuan
[CORE]修復(fù) Node.walk 遍歷錯誤的問題 #6710
[CORE]修復(fù)調(diào)用 cc.dynamicAtlasManager.showDebug 報錯的問題 #6697
[CORE]修復(fù) onLoad 中設(shè)置節(jié)點的 size 無效的問題 #6688
[CORE]修復(fù)按鈕禁用狀態(tài)下的材質(zhì)將背景材質(zhì)重置回默認材質(zhì)的問題 #6562
[CORE]修復(fù) BMFont 配置數(shù)據(jù)不存在時的報錯 #6472
[CORE]修復(fù)開啟預(yù)乘后,透明度無效的問題 #6451
[CORE]修復(fù) Camera.render() 渲染兩次的問題,#6355,感謝 大城小胖
[CORE]修復(fù)調(diào)用 Texture2D.setPremultiplyAlpha 之后圖片翻轉(zhuǎn)的問題 #6602
[PARTICLE]修復(fù) 2d 粒子系統(tǒng) relative 模式,節(jié)點旋轉(zhuǎn)時,粒子跟隨的問題 #6236
[3D]修復(fù) 3D Label 在 char 模式下不顯示的問題#6882
[3D]修復(fù)勾選 Enable Auto Batch 選項并切換 Mesh 資源導(dǎo)致渲染錯誤的問題 #6901
[3D]修復(fù)渲染單個 Camera 陰影錯位的問題 #6477
[3D]修復(fù) effect 中 cc_matProj 錯誤的問題 #6653
[EDITBOX]修復(fù) number 模式下,EditBox.maxLength 屬性不生效的問題 #6725
[EDITBOX]修復(fù) EditBox 在 ScrollView 里滾動時,無法更新位置的問題 #6634
[TILEDMAP]修復(fù) Tiled Map 渲染順序可能錯誤的問題 #6284
[TILEDMAP]修復(fù) Tiled Map 隱藏的圖像還是會渲染的問題 #6309
[SPINE]修復(fù) Spine 紋理使用壓縮紋理后渲染錯誤的問題 #6483
[SPINE]修復(fù) Spine 貼圖可能渲染錯誤的問題 #6584
[SPINE]修復(fù)貼圖設(shè)置為預(yù)乘后,DragonBone 與 Spine 渲染錯誤的問題 #6696,感謝 大城小胖
[DRAGONBONE]修復(fù) DragonBone 在銷毀場景時一直報錯的問題 #6553
Native
修復(fù)屏幕翻轉(zhuǎn)后,節(jié)點縮放不正確的問題 #6689
修復(fù)安卓原生 JniHelper 不是線程安全的問題 #2457
修復(fù) unzip 不是線程安全的問題 #2131,感謝 benloong
修復(fù)安卓 EditBox 的完成按鈕被虛擬導(dǎo)航欄遮擋的問題 #2426
修復(fù) Spine 節(jié)點在 iOS 上無法獲取節(jié)點大小的問題 #273
修復(fù)原生 Effect 中 cc_time 錯誤的問題 #6586
修復(fù) iOS 音頻播放可能崩潰的問題 #2358
修復(fù)節(jié)點旋轉(zhuǎn)計算錯誤的問題 #2361
修復(fù)設(shè)置 Label.string 時編碼錯誤導(dǎo)致崩潰的問題 #2395
修復(fù)游戲退出時出現(xiàn)報錯 #2406
修復(fù)屏幕旋轉(zhuǎn)后,輸入框會將視圖上推的問題 #2415
修復(fù) Spine 3.6.53 版本導(dǎo)出的 JSON 文件里的路徑動畫解析失敗的問題 #2413,感謝 laomoi
修復(fù) Android 上重力感應(yīng)錯誤的問題 #2231
修復(fù) Tiled Map 當節(jié)點挪動到?jīng)]有地塊信息的位置時,不會被渲染的問題 #2283
修復(fù)原生 WebSocket 接口與 Web 不一致的問題 #2297
修復(fù)調(diào)用 Camera 的 render 方法,會導(dǎo)致 Spine 加速播放的問題 #258
修復(fù)安卓平臺,剔除 AudioSource 模塊導(dǎo)致 audioEngine 無法使用的問題
修復(fù) Android 9, Android 10 版本號檢測失敗的問題 #6466
Web
修復(fù) iOS Web-Mobile 摘下耳機后音頻無法播放的問題 #6730
修復(fù) WebView 透明度在 iOS 上錯誤的問題 #6717
修復(fù) iOS 瀏覽器上,輸入中文后,無法再輸入英文的問題 #6631
Mini Game
修復(fù)微信小游戲 WebSocket 發(fā)送 Uint8Array 數(shù)據(jù)報錯的問題 #115
修復(fù)音頻意外中斷時無法自動恢復(fù)播放的問題 #118
修復(fù) PC 微信數(shù)據(jù)開放域無法運行的問題
Editor
修復(fù) Sprite Editor 保存和還原狀態(tài)不對的問題
修復(fù)在動畫編輯狀態(tài)下,無法重命名不在編輯的動畫剪輯的問題
修復(fù)增加 Spine 資源后,編輯器無法識別出來的問題
修復(fù)用戶插件重啟后,編輯器可能無法打開的問題
修復(fù)多次調(diào)用 getNativeAssetPaths 返回值錯誤的問題
修復(fù)腳本重命名后加載腳本失敗的問題
修復(fù)點擊圖集會出現(xiàn) width 和 height 報錯的問題
修復(fù)使用自動圖集圖片可能失真的問題
修復(fù)導(dǎo)入某些圖片導(dǎo)致資源面板錯誤的問題
修復(fù) Prefab 編輯模式無法通過 delete 鍵刪除節(jié)點的問題
修復(fù)勾選 Filter Unused Resources 在圖集沒有被導(dǎo)出時無效的問題
修復(fù) effect 中定義宏的取值范圍無效的問題 #6616
修復(fù)動畫編輯器設(shè)置 CircleCollider.offset 屬性異常的問題 #6600
修復(fù)還原上次保存無效的問題
修復(fù)設(shè)置預(yù)覽瀏覽器無效的問題
修復(fù)導(dǎo)入 Cocos Studio 工程沒有字體資源的話,會出現(xiàn)報錯的問題
修復(fù)多開可能造成編輯器錯誤的問題
Known Issues
使用遠程 Asset Bundle 并勾選 延遲加載 時,音頻可能無法播放,請使用 cc.assetManager.postLoadNative 加載后播放。
升級提示
Cocos Creator 對項目的升級操作是不可逆的,請在升級前提交或備份舊版項目。絕大多數(shù)項目通常都能自動升級,但因為項目難免存在特殊性,開發(fā)者應(yīng)該根據(jù)項目自身需求,提前對新版本引擎進行試用和評估。此外,出于穩(wěn)定性考慮,建議即將上線或已上線的項目謹慎升級。以下是升級說明,如果開發(fā)者們在升級中遇到困難,歡迎向我們反饋,我們會盡力協(xié)助。
從 < 2.4.0 版本升級
cc.loader 已經(jīng)不建議使用,請使用最新的 cc.assetManager 來代替
子包功能已升級為 Asset Bundle
調(diào)整了項目構(gòu)建后的目錄結(jié)構(gòu),調(diào)整了 BuildResults 的 API,如果你使用了編輯器插件獲取編輯器構(gòu)建結(jié)果
從 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 使用了同一個構(gòu)建模板
如果是 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,主要用于配置引擎相關(guān)的配置,開發(fā)者的配置,建議 Android 放到 app/jni/Android.mk 和 app/jni/Application.mk中,Android Instant 請放入 game/jni/Android.mk 和 game/jni/Application.mk 中。
此外,在 Cocos Creator 編譯 Android 時會默認執(zhí)行 assembleRelease/Debug,編譯 Android Instant 時會執(zhí)行 instant:assembleRelease/Debug。
如自定義了音頻前后臺切換時的暫停邏輯,升級到 2.3.0 后請移除目前 Creator 游戲在所有平臺上前后臺互相切換時,都會在內(nèi)部自動暫停和恢復(fù)音頻。 如果開發(fā)者之前有對這一塊進行過定制,監(jiān)聽并執(zhí)行了 cc.audioEngine.pause()/resume() 之類的音頻操作,可能會和引擎默認行為沖突。如果有遇到相關(guān)的音頻問題,只需移除相應(yīng)的定制代碼即可。
從 2.0 - 2.3.0 版本升級
從 2.3.0 開始,Canvas 組件不再負責將 Canvas 節(jié)點尺寸設(shè)為屏幕大小,此行為將結(jié)合 Widget 組件實現(xiàn)。為保證兼容性,2.0 項目升級后,Canvas 所在節(jié)點會自動添加 Widget 組件。(從 1.x 項目升級無此問題)
從 < 2.2.0 版本升級
從 2.2.0 開始,我們強化了內(nèi)存管理機制,現(xiàn)在要求用戶通過代碼動態(tài)創(chuàng)建且獨立于場景節(jié)點樹的 cc.Node 必須通過 destroy() 釋放,否則引擎無法知道何時回收這類節(jié)點的內(nèi)存,會導(dǎo)致內(nèi)存泄露。
如原先手動從場景中移除的節(jié)點,在不需要用到的時候也需要統(tǒng)一 destroy():
// 假設(shè) testNode 是場景中的某個節(jié)點,若之前被手動移出場景了,如testNode.parent = null;// 或者testNode.removeFromParent(true);// 或者parentNode.removeChild(testNode);// 若往后 testNode 還會再次用到,則無需手動 destroy 該節(jié)點// 否則應(yīng)該手動調(diào)用testNode.destroy();
如原先通過 cc.removeSelf 這個 action 銷毀節(jié)點,請改為使用 cc.destroySelf。
如原先通過 cc.NodePool 管理節(jié)點,則不受影響。
從 2.2.0 開始,我們不再建議你使用節(jié)點的 Skew 功能。Skew 通常用作在 2D 引擎中模擬 3D 效果,隨著 Cocos Creator 對 3D 節(jié)點的深入支持,Skew 效果已經(jīng)完全可以由 3D 節(jié)點來實現(xiàn)。所以為了統(tǒng)一使用體驗,進一步優(yōu)化引擎底層實現(xiàn),我們廢棄了 Skew 屬性。不過我們依舊會保留一段時間內(nèi)的向下兼容,開發(fā)者可在舊項目中延續(xù)原有做法。后續(xù)我們將進一步完善兼容方式和升級案例,擇機正式移除 Skew 功能。