Cocos Creator 3.0 正式版重磅来袭!
共 11775字,需浏览 24分钟
·
2021-02-13 14:04
来了来了!Cocos Creator 3.0 正式版终于来了!在 3.0 预览版发布后,我们收到了大量开发者的热情反馈,引擎同学们动力倍增。经过了又两个月的迭代,终于将这灌注了汗水与热血的产品正式推出。
我们合并了原有 2D 和 3D 两套产品的所有功能,不仅延续了 Cocos 在 2D 品类上轻量高效的优势,并且为 3D 重度游戏提供高效的开发体验!
同时针对资源进行了大幅优化,带来了诸多重大更新!导入速度提高超 3 倍,并且大幅降低界面内存占用,大量资源情况下界面响应速度提升了 5 倍。
欢迎所有开发者使用与体验噢!
全新界面设计,更加简洁清晰 资源系统升级,增强对超大项目的支持,更加高效可靠 模块之间代码隔离,纯消息驱动,更加稳定 插件系统彻底模块化,迎接更强大的插件机制
一键接入 Cocos Service 优质服务
全新的 Prefab 系统
支持 Prefab 自动同步 Prefab 实例可覆写 Prefab 资源中的属性 支持 Prefab 嵌套
构建
缓存构建内容
在之后构建中,如果没有变化,将直接使用缓存内容,加快构建速度,提升效率。
任务式构建列表
构建后单独编译、生成
支持 Asset Bundle
开发者可以将贴图、脚本、场景等资源构建为多个 Asset Bundle 中,进而在游戏运行过程中按需加载,从而减少首次下载和加载游戏所需的时间。
Asset Bundle 可以按需求随意放置,比如可以放在远程服务器、本地,或者小游戏平台的分包中,也可以跨项目复用,用于加载子项目中的 Asset Bundle。
Splash Screen
GameView
除了更无缝的开发体验,还能在游戏运行过程中通过场景编辑器或其它面板实时调试、修改元素状态,让游戏开发更高效!
插件
强大的插件系统
你可以在扩展菜单中快速创建自己的插件,从而实现自己想要的效果。
另外,Cocos Creator 3.0 还提供了扩展管理器,可以轻松管理所有扩展插件的运行和卸载。
消息通信
Cocos Creator 3.0 还提供了消息管理器,可以清晰地看到目前编辑器内已提供的功能,降低插件开发门槛。
动画编辑器
除了标准的位移、旋转、缩放动画和序列帧动画以外,这套动画系统还支持驱动任意组件属性和用户自定义属性,再加上可任意编辑的时间曲线和创新的移动轨迹编辑功能,能够让内容生产人员不写一行代码就制作出细腻的各种动态效果,任意驱动游戏逻辑。
批量关键帧间隔调整 跨节点轨道复制粘贴 间接属性(如材质属性)关键帧编辑 动画编辑器内直接对资源进行选取、直接编辑关键帧数据 多选关键帧的缩放、移动和删除 支持多选节点后批量添加属性轨道 支持复制粘贴节点上的所有动画数据 支持屏蔽无关键帧节点与搜索节点 支持编辑分量轨道 支持调整动画编辑器布局
更完善的工具链
支持模型预览
编辑器中选中模型后可以对模型资源进行全方位预览,也可以查看默认材质中使用的各种贴图。新版的 FBX 导入器 支持 glTF 资源的导入,支持 khr-draco-mesh-compression、sparse accessor 支持动画切割 提供 Mesh Optimizer 工具 模型导入支持 quantized joints/weights
地形编辑器
地形编辑主要包括三大功能:管理(Manage)、雕刻(Sculpt)、描绘(Paint)。同时支持 Normal Map,PBR 材质和自定义材质。
内置烘焙系统
配置
可视化的宏配置
通过预设批量配置压缩纹理
给图片设置预设后,还可以直接修改预设来批量更新对应的纹理,大大方便了项目的全局管理。
支持 2.x 项目迁移
此工具将支持旧项目资源完美导入,以及代码的辅助导入。
代码辅助导入会把 js 转换成 ts,添加组件类型声明、属性声明及函数声明,组件在场景中的引用都会得到保留,并且函数内部的代码会以注释的形式导入进来,可以减轻开发者的升级难度。
不过 2.x 的 API 和 3.0 仍然有不小的差异,我们能尽可能通过 deprecation 和 removal 机制来做运行时警告,开发者的代码仍需做不小的调整才能够完美升级到 3.0。
我们在 3.0 中将两者的优势进行了融合,全面支持 2D、3D 的各种功能特性,无论 2D 还是 3D,3.0 都将满足你的需求。
渲染系统
一个优秀的渲染系统必须兼顾各类平台,抹平平台间的差异。
Cocos Creator 3.0 的渲染系统,从架构到设计都是以面向未来、高性能、跨平台为目标,极大地提升了渲染能力和健壮性。
支持 Metal, Vulkan, WebGL 1.0,WebGL 2.0,GLES2, GLES3 的多渲染后端,向渲染管线层提供统一的 GFX 图形 API 层。 贴近现代图形 API 的 GFX API 设计,帮助渲染管线层尽可能释放现代图形 API 提供的性能和可能性。 内置前向渲染管线,支持用户自定义渲染管线 基于物理的光源、摄像机和材质,帮助开发者用工业化流程制作最真实的视觉效果。
支持 GPU Instancing 合批优化,适用于绘制大量顶点数据相同的动态模型,更支持对包含骨骼动画计算的模型进行 instancing 合批
支持全局雾效
强大的原生渲染器,使用内存共享机制减少 JSB 调用,加快数据访问 支持 ASTC,ETC,ETC2,PVR 等压缩纹理
光影
基于物理的光源
Cocos Creator 3.0 采用光学度量单位来描述光源参数。基于光学度量单位,我们可以将光源的相关参数全部转化为真实世界中的物理值。这样,设计人员可根据实际灯光的工业参数以及真实环境的实际物理参数来调节光照强度、颜色、范围等信息,使整体光照效果和光照衰减更加符合真实的自然环境。
基于多 Pass 的多光源支持 支持高性能的平面阴影 Planar Shadow 基于 Shadow Map 的方向光和聚光灯动态阴影,支持 PCF 软阴影与 GPU Instancing
粒子系统
良好的粒子效果可以使游戏画面更加惊艳。
支持多达数十个模块设置,并支持各类曲线,常量变化
支持 GPU 粒子,极大提升渲染性能 支持 Cocos 传统的 2D 粒子
材质系统
材质系统作为基础模块,为上层建筑提供了坚实的基础。
内置基于物理的标准材质
支持 Cocos Effect
Cocos 设计的基于 YAML 和 GLSL 的 Cocos Effect,是一种单源码嵌入式领域特定语言 (single-source embedded DSL),YAML 部分声明流程控制清单,GLSL 部分声明实际的 Shader 片段,这两部分内容上相互补充,共同构成了一个完整的渲染流程描述。支持超过 32 个 Effect 宏定义
Cocos Effect 编译器自动剔除无效代码
支持导入 Effect 头文件
Effect 的资源面板现已支持预览编译后的 Shader 代码,并支持可视化编辑 Shader 的每个 Define
支持材质预览
中间件
支持 TiledMap
支持 Spine、DragonBones 支持 Spine、DragonBones 和 TiledMap 在 3D 场景中渲染(需自定义材质控制深度检测)
骨骼动画系统
我们也支持导入外部 FBX、glTF 资源中已经包含的骨骼动画,资源管理器中可以对这些动画进行二次剪辑,在动画编辑器中可以预览动画效果,添加动画事件触发器,通过动画系统 API 也可以自如得控制动画播放。
CPU 或 GPU 驱动的骨骼动画,可自由切换
支持动画的融合过渡(CPU 驱动)
使用二进制格式存储骨骼动画,减少文件大小
支持通用动画与骨骼动画两种组件
支持 Uniform 等材质子属性动画
支持 CPU 驱动的 Morph Target (Blend Shape)
脚本系统
我们在 3.0 中进一步完善了对 TypeScript 的支持:
拥抱 ES6 和 TypeScript,完善的代码提示和自动导入 属性支持独立的 type decorator: @integer
,@float
,@string
,@boolean
,@type
等支持 Async Await 语法 可选链(Optional Chaining)支持 空值合并(Nullish Coalescing)支持 某些循环引用行为将在运行检测并作出警告 增加 core-js polyfills 来帮助部分低端平台补全 ES6 支持 支持 loose 编译模式,可以减小包体和优化性能 支持使用 NPM 库 细分引擎模块,允许更细致的模块剔除
UI 系统
灵活简洁的 2D 渲染和 UI 交互、排版组件,支持包括 Sprite, Label, Button, Widget 等 20 种组件,你可以使用这些基础组件组合出各种类型的 UI 效果。
支持静态合批
引擎提供了 UIStaticBatch 组件,不需要频繁改动的 UI 可以使用此组件来缓存渲染数据,从而降低渲染消耗,提高性能。支持运行时动态合图,减少 drawcall 数量,优化性能。
合并了 UI 渲染流程和前向渲染流程,允许 2D 和 3D 渲染组件混排,完全由节点 Layer 和摄像机 Visibility 决定渲染可见性。
物理
支持多物理后端选择,包括 ammo.js、cannon.js 以及更为轻量的 builtin 物理 支持微信小游戏使用 WASM 物理后端,能在 iOS 上获得更高的性能表现 物理系统支持固定步长刷新 支持物理材质 支持包括单形、圆锥、平面、地形、胶囊体、圆柱体、静态网格碰撞体等多种实用的碰撞体
支持点到点、铰链约束组件 网格碰撞器添加凸包近似功能
支持传统 Creator 2D 物理与碰撞系统
Editor
[3.0 NEW FEATURE] 新的 FBX 导入器
[3.0 NEW FEATURE] 编译时支持 loose 编译模式
[3.0 NEW FEATURE] 地形支持 normal map 和 pbr 材质
[3.0 NEW FEATURE] 在 GameView 模式下支持 EditBox
[3.0 NEW FEATURE] 支持编译项目脚本时按照预编译宏进行代码剔除
[3.0 NEW FEATURE] 支持构建过程中,剔除 deprecated 的兼容代码,减少包体
[3.0 NEW FEATURE] 全新的 Prefab 系统,支持 Prefab 嵌套
[3.0 NEW FEATURE] 地形系统支持使用自定义画刷以及设置法线贴图
[3.0 NEW FEATURE] 支持资源包导入导出功能
[3.0 NEW FEATURE] 原生平台支持脚本加密
[3.0 NEW FEATURE] 新增华为 AGConnect 构建平台
[3.0 NEW FEATURE] 新增华为快游戏调试工具
[3.0 NEW FEATURE] 支持接入 Cocos Service
[Sync 2.x] 支持模拟器预览
[Sync 2.x] 支持发布连尚小游戏平台
[Sync 2.x] 支持发布趣头条小游戏平台
[Sync 2.x] 支持构建 Android Instant
[Sync 2.x] 支持新版序列化机制
[Sync 2.x] Asset Bundle 支持
[Sync 2.x] 支持预览时引擎模块剔除
[Sync 2.x] 编辑器支持导入 JSON 资源
[Sync 2.x] 编辑器支持导入文本资源
[Sync 2.x] 编辑器支持导入 LabelAtlas 资源
[IMPROVE] 升级 electron,支持 M1 芯片的电脑
Engine
[3.0 NEW FEATURE] 支持使用 NPM 库
[Sync 2.x] 支持 Tiledmap
[Sync 2.x] 支持 Spine
[Sync 2.x] 支持 DragonBone
[Sync 2.x] 支持 MotionStreak
[Sync 2.x] 支持 WebView
[Sync 2.x] 支持 VideoPlayer
[Sync 2.x] 支持 2D 物理与碰撞系统,包括 box2d 与 builtin
[Sync 2.x] 支持 Asset Manager 资源管理
[Sync 2.x] 支持 LabelShadow
[Sync 2.x] 支持 SafeArea
[Sync 2.x] Mask 支持 image stencil
[Sync 2.x] 音频支持多播
[Sync 2.x] 支持动态合图
[IMPROVE] UIMeshRenderer 支持接收平行光照
[IMPROVE] 移除 cc.Class() 式声明
[IMPROVE] 重构 3D 物理碰撞矩阵,碰撞矩阵仅用于初始化刚体的分组和掩码,不再维护更新,废除 Use Collision Matrix 配置项
[IMPROVE] 重构 3D 刚体,移除 RigidBody.isKinematic,增加 RigidBody.type 用于设置刚体类型,移除 fixedRotation, 改为使用 angularFactor 代替
[IMPROVE] UI 支持自定义材质
[IMPROVE] 优化 UI 系统性能,减少 drawcall 数量
[FIX] 修复 Safari 14 的性能问题
[FIX] 修复 Button 组件 Scale 设置异常的问题
[FIX] 修复 submodel 的 lightPassIdx 一致导致渲染出错的问题
[FIX] 修复地形碰撞器在节点缩放后,与渲染效果不匹配的问题
[FIX] 修复调用
view.setFrameSize
接口报错的问题[FIX] 修复 EditBox 组件在 InputMode 不是 ANY 的情况下,设置 label 对齐方式无效的问题
Mini Game
[3.0 NEW FEATURE] 支持全新的子域方案 [3.0 NEW FEATURE] 支持微信小游戏使用 wasm 物理后端
Native
[3.0 NEW FEATURE] 支持 Metal 渲染后端 [3.0 NEW FEATURE] 支持 Vulkan 渲染后端 [IMPROVE] 进一步减少 jsb 调用,优化性能
Known Issue
安卓上的 Vulkan 后端目前存在性能问题,我们将在之后版本进行修复。 在 m1 芯片的机器上,编译 ios 模拟器会出现报错,需要手动把 arch 变成 arm64,将在后续版本进行修复 Android 暂不支持发布 x86_64 架构 原生平台暂不支持使用 freetype 进行文字渲染 Button 组件暂不支持 enable auto gray effect
选项目前无法对场景中的 Prefab 实例进行创建组件,删除组件,删除子节点,调整子节点顺序功能,建议在 Prefab 资源中进行这些操作 场景中节点目前无法引用 Prefab 中的节点或组件 当地形不是 n*n 的时候,烘焙会失败 老版本项目升级后,Prefab 数据迁移可能会出现问题,请参考帖子 https://forum.cocos.org/t/105939 获取最新的修复方案。
Breaking changes
引擎源码内置的 effect 统一更改为和编辑器资源不同的命名规则,如果项目场景里完全没有用到某个 effect,现在在脚本里用 effect 名字是获取不到了(比如 builtin-unlit 等)。建议开发者在需要程序创建材质时,统一把 effect asset 作为脚本的 property 暴露出来,在场景里挂载,然后在 material.initialize 时直接传入。 编辑器 HOME 目录从 /.CocosEditor3D 切换回了 /.CocosCreator,插件目录由 packages 更名为 extensions。3.0 之后的插件,都会存放在 /.CocosCreator/extensions 和 PROJECT/extensions 里。 原先的子域方案不再适用,请切换到最新的子域方案 不支持 JavaScript,仅支持 TypeScript 不再支持 cc 全局变量,请通过模块导入来使用 2D 节点现在也会严格按照 layer 和 camera 的 visibility 进行能否渲染的判断,在多个摄像机存在的情况下可能会出现重复渲染的情况,需要重新调整节点的 layer 物理事件重构,不再支持静态刚体之间的事件,建议在监听事件的碰撞体对应节点上添加 Kinematic 或 Dynamic 的刚体组件 无法升级到新的 Prefab 系统的 Prefab,会断开关系,还原成一个普通节点
API 更新(相对 Cocos Creator 3D)
物理材质类型名称进行了变更
Creator 3D v1.2 Creator v3.0 PhysicMaterial PhysicsMaterial geometry 空间下的部分类型名称和方法名称进行了变更
Creator 3D v1.2 Creator v3.0 line Line plane Plane ray Ray triangle Triangle sphere Sphere aabb AABB obb OBB capsule Capsule frustum Frustum MorphModel models.MorphModel ray_aabb rayAABB ray_plane rayPlane ray_triangle rayTriangle ray_sphere raySphere ray_obb rayOBB ray_capsule rayCapsule ray_subMesh raySubMesh ray_mesh rayMesh ray_model rayModel line_plane linePlane line_triangle lineTriangle line_aabb lineAABB line_obb lineOBB line_sphere lineSphere aabb_aabb aabbWithAABB aabb_obb aabbWithOBB aabb_plane aabbPlane aabb_frustum aabbFrustum aabbFrustum_accurate aabbFrustumAccurate obb_point obbPoint obb_plane obbPlane obb_frustum obbFrustum obbFrustum_accurate obbFrustumAccurate obb_obb obbWithOBB obb_capsule obbCapsule sphere_plane spherePlane sphere_frustum sphereFrustum sphereFrustum_accurate sphereFrustumAccurate sphere_sphere sphereWithSphere sphere_aabb sphereAABB sphere_obb sphereOBB sphere_capsule sphereCapsule capsule_capsule capsuleWithCapsule sys 下的某些平台变量进行了变更
Creator 3D v1.2 Creator v3.0 BAIDU_GAME BAIDU_MINI_GAME VIVO_GAME VIVO_MINI_GAME OPPO_GAME OPPO_MINI_GAME HUAWEI_GAME HUAWEI_QUICK_GAME XIAOMI_GAME XIAOMI_QUICK_GAME JKW_GAME COCOSPLAY ALIPAY_GAME ALIPAY_MINI_GAME BYTEDANCE_GAME BYTEDANCE_MINI_GAME Canvas 组件不再拥有 clearFlag,color,priority,targetTexture,visibility 等属性,请直接通过 Canvas 组件引用的 Camera 组件获取
2D 相关的部分组件进行了更名
Creator 3D v1.2 Creator v3.0 UIRenderable Renderable2D UIDrawBatch DrawBatch2D
在 2021 年,2.4 将继续更新版本,提供缺陷修复和新的小游戏平台支持,以及 Apple Silicon (M1) 芯片的支持,保障大家的项目成功上线。
在 2022 年我们还将为开发者持续提供 2.4 的关键问题修复,保障已上线的游戏平稳运营!因此,
现有的 2.x 项目可以安心继续开发,无需强制升级 3.0。 新项目则建议使用 3.0 版本开发,我们会不断优化 3.0 的开发体验和运行效率,支撑好 2D、3D 等不同品类的重度游戏顺利上线。
3.0 发布后,Creator 3D 也将包含在 3.0 中,现有的 1.2 项目都可直接升级,因此 Cocos Creator 3D 后续不会再发布独立版本,还望周知。
如果现有项目有特殊原因需要升级,并且遇到了技术上或者工作量上的困难,也可以联系 zhengxiong.zhao@cocos.com 获取我们的人工协助!
如未安装 Cocos Dashboard,请前往官网 https://www.cocos.com/creator 点击【下载 Dashboard】 打开 Cocos Dashboard,在编辑器栏目中点击【下载】,在最新的 Cocos Creator 3.0.0 右侧点击下载按钮即可。
Cocos Creator 3.0 用户手册: https://docs.cocos.com/creator/3.0/manual/zh/ Cocos Creator 3.0 升级指南: https://docs.cocos.com/creator/3.0/manual/zh/release-notes/upgrade-guide-v3.0.html
Cocos 论坛 3.0 专区: https://forum.cocos.org/c/58 Cocos 小秘书: https://www.cocos.com/assistant