Cocos Creator 是以内容创作为核心,实现了脚本化、组件化和数据驱动的游戏开发工具。 具备了易于上手的内容生产工作流,以及功能强大的开发者工具套件,可用于实现游戏逻辑和高性能游戏效果。
关于公司:
雅基软件 —— Cocos 引擎官方团队,致力于为移动游戏行业提供先进的技术和服务, 让游戏开发者可以更加专注的进行游戏内容创作,并携手行业伙伴深度合作, 共建一个开放、务实的移动游戏生态。 雅基软件,于 2011 年 12 月 30 日在中国厦门注册成立, 凭借深厚的技术底蕴和多年游戏行业的经验积累,自主研发了“Cocos 引擎”系列产品, 包括第二代游戏编辑器 Cocos Creator、全球流行的开源引擎框架 Cocos2d-x 等产品。 Cocos 目前在全球拥有 140 万的注册开发者,30 万的月活跃开发者,遍布全球超过 203 个国家和地区, 覆盖超过11亿玩家设备,采用 Cocos 引擎开发的游戏覆盖市面全品类,在移动游戏中国市场份额占比 45%, 全球市场份额占比 30%,是一款优秀的开源移动游戏引擎。
官方简介:
工欲善其事,必先利其器!在长达两个月的测试后,2.4.0 版本终于来了!在此感谢给予我们宝贵意见和建议的各位小伙伴们!这个版本中包含了许多新的功能与更新,如资源管理系统重构,Asset Bundle。并优化了原生上 Label 渲染的性能,优化 Graphic 渲染效果等等。相信全新的 2.4 版本将会让大家的工作效率更加高效,游戏内容更加丰富,游戏体验进一步提升,建议所有开发者升级哦!
软件优势:
一体化编辑器: 包含了一体化、可扩展的编辑器,简化了资源管理、游戏调试和预览、多平台发布等工作。允许设计师深入参与游戏开发流程,在游戏开发周期中进行快速编辑和迭代。支持 Windows 和 Mac 系统。
2D 和 3D: 同时支持 2D 和 3D 游戏开发,具有可满足您各种游戏类型特定需求的功能。并且深度优化了纯 2D 游戏的编辑器使用体验和引擎性能,内建了 Spine、DragonBones、TiledMap、Box2D、Texture Packer 等 2D 开发中间件的支持。
开源引擎:Cocos Creator 的引擎完全开源,并且保留了 Cocos2d-x 高性能、可定制、容易调试、易学习、包体小的优点。
跨平台: Cocos Creator 深度支持各大主流平台,游戏可以快速发布到 Web、iOS、Android、Windows、Mac,以及各个小游戏平台。在 Web 和小游戏平台上提供了纯 JavaScript 开发的引擎运行时,以获得更好的性能和更小的包体。在其它原生平台上则使用 C++ 实现底层框架,提供更高的运行效率。
JavaScript:您可以完全使用 JavaScript 来开发游戏,在真机上进行快速预览、调试,对已发布的游戏进行热更新。同时支持 TypeScript。
高效的工作流程:Cocos Creator 预制件是预配置的游戏对象,可提供高效而灵活的工作流程,让设计师自信地进行创作工作,而无需为犯下耗时的错误担忧。
UI:内置的 UI 系统能够让您快速、直观地创建用户界面。
自定义工具:您可以借助各种您所需工具扩展编辑器功能以匹配团队工作流程。创建或添加自定义的插件或在插件商店中找到所需资源,插件商店中有上百种能够帮助您加快项目进程的范例、工具和插件。
新版功能:
支持 Asset Bundle 功能
Asset Bundle 可将工程中的资源按照开发者的意愿进行模块划分,将不同场景不同需求的资源划分在多个包中,从而可以减少首次下载和加载游戏时所需要的时间,也可以跨项目复用,用于加载子项目中的 Asset Bundle。
Asset Bundle 还提供了优先级,压缩类型等相关设置用于对 Asset Bundle 的包体和加载进行优化。
新增 cc.AssetManager 模块用于资源管理
Asset Manager 是 Creator 在 v2.4 新推出的资源管理器,其具备加载资源,查找资源,销毁资源,缓存资源,Asset Bundle 等功能。Asset Manager 拥有更好的性能,更易用的 API,更强的扩展性。其主要提供了以下几点新特性:
支持所有资源的加载与预加载,预加载能以更轻量的方式静默运行,不影响运行效率
支持 Asset Bundle
支持更安全的自动释放机制,释放资源时无需考虑其引用情况,避免错误释放资源
支持下载失败重试,下载优先级,下载并发数等设置,可根据各种情况进行调整
支持更方便地定制加载流程,实现特殊效果
增加 Label 的混合选项
支持设置 Lable 的混合选项,可在不同的使用场景下使用不同的设置以最大化文本渲染性能。详细请参考 系统文本的混合模式说明 。
原生平台上使用 FreeType 渲染 Label
提升 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 设备
其它新增特性
增加压缩纹理缓存功能,构建之后将压缩纹理进行缓存,重复构建时将尽量复用缓存内容,加快构建速度
在 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 功能。