hero-image
2020.05.08

V1.1.0版本

发布时间: 2020.05.08

自从 Cocos Creator 3D 去年发布以来,我们经历了 v1.0.x 的五个版本迭代,也陪伴大家度过了最难熬的疫情封城阶段,在这看似停滞的 2020 年,引擎组和我们的开发者一样,始终没有停下脚步,一直在追求更好的产品。除了不断提升稳定性的 v1.0.x 以外,从一月开始,我们就启动了 v1.1 的版本迭代,陆续实现了很多开发者期待的新功能,也做了非常多的优化。不论是性能、功能还是易用性,我们都做了非常多工作,我们这段时间努力的成果 Cocos Creator v1.1 目前已经正式更新了。

重点功能介绍

性能方面优化

GPU Instancing 合批优化

为了释放更多 GPU 端的能力,我们增加了 GPU Instancing 特性来帮助开发者优化合并 Draw call(需要手动在材质中指定开启 UseInstancing 选项才会生效),适用于绘制大量顶点数据完全相同的动态模型,同时也可以通过自定义 shader 加入更多逐 instance 的材质属性,详见 动态合批文档

更进一步,我们甚至支持蒙皮模型的动态 GPU Instancing 合批,同样只要满足顶点数据完全相同,即便是模型在播放不同的骨骼动画、动画进度不同的情况下,也可以正确合并渲染。

如果你的骨骼动画比较多,可能需要做一些配置,我们也为开发者提供了很方便的 骨骼动画贴图合批配置面板

最后令人安心的是,不仅支持渲染特性更完善的 Web 和 Native 平台,即便是微信平台也有相应的 WebGL 扩展支持,所以如有相关渲染效果需求,请一定开动脑筋,多加利用!

GPU 粒子特效

在最新的测试版本中,大家只需要在 ParticleSystem 组件的 Renderer module 中设置 useGPU 即可开启 GPU 粒子模拟。GPU 粒子在不支持 JIT 的 iOS 平台性能测试结果如下,有成倍的性能提升,可以放心的使用一些轻量的粒子特效了。未来我们还会继续用更极限的方式优化粒子特效的性能。

另外,我们还新增了粒子数据剪裁功能,只要在粒子组件面板中开启 EnableCulling 即可对未开启的粒子模块进行数据剔除,减小场景和 prefab 的尺寸。


功能方面优化

动画系统

多个千呼万唤的动画功能在 v1.1 也正式加入了:

  1. 开发者们通过内容生产工具导出的 Morph Target 顶点形变动画也可以在 Creator 3D 中正常播放啦,需要在 SkinningModelComponent 上勾选 EnableMorph 选项。
  2. 骨骼动画的实时计算模式:非预烘焙模式,作为后续 blending、masking、secondary physics 和代码手动控制骨骼姿势等需求的统一基础支撑框架。只需要在 SkeletalAnimationComponent 中不勾选 UseBakedAnimation 即可使用实时计算模式。
  3. 动画组件的 crossFade 函数正式支持骨骼动画的融合过渡,由于这个功能基于实时计算模式,所以需要在 SkeletalAnimationComponent 中不勾选 UseBakedAnimation。注意,因为这实际上让骨骼动画从 GPU 计算改为了 CPU 计算,所以性能损耗会大很多,需要尽量控制使用动画融合的模型数量。

地形功能增强和烘焙库

在 v1.1 中我们增强了地形编辑功能,也增加了场景 light map 烘焙功能。地形编辑的 UI 界面有了很大的提升,也增加了凹下平滑等功能。

需要注意的是,这两个功能仍然在实验室阶段,所以还需要不断得打磨,功能和特性上也没有固化,欢迎大家提出你们的宝贵意见。

新增物理碰撞体支持

为了加强对物理游戏的支持,我们新增了数个非常有用的碰撞体:

  • 胶囊体编辑 Gizmo
  • 圆柱体碰撞体及编辑 Gizmo
  • 静态网格碰撞体(暂不支持编辑)

除此之外,我们还增加了法线信息到物理射线检测结果中,方便判断物体朝向,开发者可以利用这个信息来计算子弹等物体在接触面上的反弹。

const ray = new geometry.ray();
ray.d.set(0, 0, 1);
if (PhysicsSystem.instance.raycastClosest(ray)) {
    const result = PhysicsSystem.instance.raycastClosestResult;
    result.hitNormal; // 获取法线方向,可以和 ray.d 一起计算出射角度
}

支持发布百度小游戏平台

v1.1 版本继续加强了平台支持,新增百度小游戏平台支持,开发者们可以直接将游戏发布到百度小游戏平台了,使用体验和其他平台没有区别。


易用性方面

Cocos Creator 3D 接入 Cocos Dashboard

从 v1.1 开始 3D 引擎也直接由 Cocos Dashboard 来管理,这是 Creator 2.x 和 3D 引擎融合的起点。产品层面的融合还有很长的路要走,但我们有坚定的信心最终带给大家完善统一的产品体验。

Camera 预览小窗

虽然之前已经提供了一个独立的 Camera 预览窗口,不过大家对场景中随时观察游戏视角的需求非常强烈,我们也快速得实现了这个功能,从 v1.1 开始,当开发者选中场景中的 Camera 时,就会在场景窗口右下角看到这个 Camera 的预览小窗,切换 Camera 会实时改变预览内容。

材质预览

同样是一个预览功能,材质面板上也开启了材质球预览的功能,这样编辑材质的时候就可以直接在不同的预设模型上看到材质的效果预览了。

这个功能有时候过于鬼畜,程序员和技美可千万忍住不要把策划大人的脸贴上去,笑到脱力我们引擎不会负责任的(免责声明)。

插件脚本依赖

这也是最新的测试版中新增的功能,再也不用担心插件脚本的加载顺序混乱了,大家可以给自己的 JS 插件脚本定义依赖关系,加载的时候也会按照依赖进行加载排序。

我们也更新了一个使用 Protobuf 的实例工程到 Example 仓库 中。

Camera 预览小窗

虽然之前已经提供了一个独立的 Camera 预览窗口,不过大家对场景中随时观察游戏视角的需求非常强烈,我们也快速得实现了这个功能,从 v1.1 开始,当开发者选中场景中的 Camera 时,就会在场景窗口右下角看到这个 Camera 的预览小窗,切换 Camera 会实时改变预览内容。

动画编辑器操作优化

动画编辑器一直都是我们非常重视的模块,从 Cocos Creator 时代开始就不断打磨到现在,在 v1.0.4 中,我们已经增加了诸如:快捷的批量关键帧间隔调整,跨节点轨道复制粘贴,间接属性(如材质属性)关键帧编辑,动画编辑器内直接对资源进行选取等非常好用的功能。现在在 v1.1 中,我们进一步支持了多选关键帧后的缩放、移动和删除功能,还支持动画编辑器布局的调整。可以看下面的视频更直观得感受我们动画编辑器内的编辑体验。


需要注意的行为修改

  • macro.ENABLE_WEBGL_ANTIALIAS 配置在之前到版本中并没有生效,而 v1.1 我们修复了这个问题。由于该配置默认值为 false,开发者们可能会感受到抗锯齿被关闭的模糊感,可以通过在 main.js 的 cc.game.init 之前增加 cc.macro.ENABLE_WEBGL_ANTIALIAS = true; 来开启抗锯齿。默认值保持 false 的原因是关闭抗锯齿可以在不少中低端设备上提升性能。
  • 原生平台构建目录存在 frameworks 时将不修改配置数据只更新项目资源,原生平台的查看构建配置选项屏蔽平台相关修改。如果需要编辑器来重新配置项目数据,请删除原目录下的 frameworks 文件夹或者新建构建任务。关于原生构建任务我们后续还会收集用户反馈做进一步的优化。
  • 重构 SpriteFrame 结构,SpriteFrame 不再直接引用原始图像资源,而改为引用一个 Texture2D
  • 胶囊碰撞体属性重构,height 变为 cylinderHeight

文档和教程

随着 v1.1 大量新功能的更新和体验的优化,我们也准备了充分的文档给大家参考。还有一个好消息是,我们在 B 站连载的快上车系列视频教程也完结了,如果你是刚接触 Cocos Creator 3D 的开发者,那么这份视频教程可以说是最合适的上手资料。

除此之外,在我们公众号上,最近会陆续更新一些 3D 的技术分享,大家可以保持关注,给我们公众号加个星吧!如此良心的技术社区怎能错过?


完整新增内容和优化

Editor

  • [FEATURE] 支持对插件脚本进行排序,可定义依赖关系
  • [FEATURE] 新增构建时模块信息擦除功能,大幅优化脚本导入速度
  • [FEATURE] 增加组件文档跳转功能
  • [FEATURE] 动画编辑器支持缩放关键帧,优化多选关键帧后的缩放、移动、删除
  • [FEATURE] 支持地形烘焙 light map 功能
  • [FEATURE] 新增场景编辑器内的摄像机预览小窗
  • [FEATURE] 新增材质属性检查器中的材质预览
  • [FEATURE] 支持在模型属性面板设置修改骨骼动画的 Wrap Mode(感谢 @tangxuanli2014 反馈)
  • [FEATURE] 动画编辑器上下部分支持拖拽更改布局方便编辑
  • [FEATURE] 支持发布到百度平台
  • [FEATURE] 原生平台的构建模板支持
  • [FEATURE] 脚本构建选项界面增加“擦除模块结构”选项
  • [FEATURE] 构建面板的场景支持搜索
  • [FEATURE] Console 内部分资源报错支持点击后资源管理器中对应资源直接闪烁提示
  • [FEATURE] 编辑器根据状态动态调整帧率,降低 CPU 占用
  • [FEATURE] 多选节点的时候支持添加删除组件
  • [FEATURE] 支持同时拖拽多个资源到 Inspector 中的数组元素上
  • [FEATURE] Inspector 数字输入框支持鼠标点击属性名拖拽来快速修改数值
  • [FEATURE] 模型导入增加了“使用顶点色”选项
  • [FEATURE] 在偏好设置 —> 插件 —> builder 选项内可实时修改构建进程的 log 等级
  • [FEATURE] 新增 Camera 和 Gizmo 配置(相机的颜色和网格颜色)
  • [FEATURE] 项目设置中 Layers 设置支持清空名称即为删除
  • [FEATURE] 新增胶囊和圆柱碰撞体编辑 Gizmo
  • [IMPROVE] 大幅降低资源管理器性能开销
  • [IMPROVE] 新建项目时统一了 git 换行符配置
  • [IMPROVE] 地形编辑和画刷功能增强
  • [IMPROVE] 支持 UMD 格式的插件脚本
  • [IMPROVE] 增加 console 在 ready 时的容错
  • [IMPROVE] 优化剪切节点的功能
  • [IMPROVE] 节点支持空名称
  • [IMPROVE] 优化 Camera 和 Gizmo 弹窗间距和缩短隐藏时间
  • [IMPROVE] 优化 Gizmo 性能
  • [IMPROVE] 优化编辑器 i18n 数据格式
  • [IMPROVE] 优化脚本导入失败时的输出消息,帮助解决循环引用问题
  • [IMPROVE] 优化构建面板的场景列表显示
  • [IMPROVE] 添加组件选择弹框使用优化
  • [IMPROVE] Inspector 内限制编辑内置资源并且增加锁定提示
  • [IMPROVE] 优化材质 Inspector 中选框的点击区域
  • [IMPROVE] 优化 Color Picker 保存颜色的功能
  • [IMPROVE] 更改压缩纹理、自动图集、图片导入的图片库
  • [IMPROVE] 优化自动图集面板,允许直接查看合图资源以及修复点击 preview 触发修改
  • [IMPROVE] 优化 assets 面板操作体验:支持回车键重命名;支持限定类型搜索
  • [IMPROVE] 支持 glTF 格式中的 sparse accessor
  • [IMPROVE] 部分面板内搜索后支持使用上下方向键选择搜索结果
  • [IMPROVE] 部分面板内搜索后支持使用 enter 键选择
  • [IMPROVE] 将预览设备分辨率数据迁移到项目配置内
  • [IMPROVE] 同步相机设置颜色的属性改为 clearColor
  • [IMPROVE] 动画编辑器中对所有 ctrl 相关的快捷键进行 mac 的兼容处理
  • [IMPROVE] 消除当脚本构建的 bundle 过大时候的警告
  • [IMPROVE] 移除百度平台不支持的部分横屏方向
  • [IMPROVE] 构建场景搜索功能不区分大小写,优化列表展示
  • [IMPROVE] 移除 Huawei、OPPO、vivo、小米平台对 icon 图标后缀限制
  • [IMPROVE] 添加原生平台校验处理,参数填写不完善界面将直接提示
  • [IMPROVE] 优化构建 log 输出,将可以直接在控制台关联到对应报错资源
  • [IMPROVE] 增加导入器异步保存时的等待,避免导入流程未完成情况下导致的文件丢失
  • [IMPROVE] 优化地形编辑存储
  • [IMPROVE] 禁止对地形属性进行动画编辑操作
  • [IMPROVE] 兼容低版本 TexturePacker 导出资源

Engine

  • [FEATURE] 模型支持自动 GPU Instancing 合批
  • [FEATURE] 骨骼动画支持自动 GPU Instancing 合批
  • [FEATURE] 支持 Morph target(Blend Shape)
  • [FEATURE] 支持动画 CrossFade
  • [FEATURE] GPU Based Particle System
  • [FEATURE] 相机组件调整:加入 FOV 轴向和曝光相关参数设置以及优化编辑器面板(感谢 @k8w 反馈)
  • [FEATURE] 新增静态网格碰撞体和圆柱碰撞体
  • [FEATURE] 增加法线信息到物理射线检测结果中
  • [FEATURE] 增加 ray_model、ray_mesh 到 geometry.intersect
  • [IMPROVE] GFX 抽象优化和代码精简,简化 WebGL 后端实现
  • [IMPROVE] 在静态合并模型批次后不需要再手动禁用原始节点或模型(感谢 @玻璃小屋 反馈)
  • [IMPROVE] 优化组件生命周期函数的运行保护(合并自 Creator 2.x)
  • [IMPROVE] 重构 SpriteFrame 结构,SpriteFrame 不再直接引用原始图像资源,而改为引用一个 Texture2D
  • [IMPROVE] 优化游戏和引擎启动流程
  • [IMPROVE] 优化动画数据准备逻辑
  • [IMPROVE] 优化动画混合逻辑
  • [IMPROVE] 优化骨骼动画曲线支持
  • [IMPROVE] 优化骨骼动画中的曲线缓存
  • [IMPROVE] 优化从初始姿态开始播放动画时的奇怪过渡问题
  • [IMPROVE] 优化 AnimationClip 的哈希计算
  • [IMPROVE] 完善 Camera 属性排序和文档
  • [IMPROVE] 物理引擎状态同步时机和调用次数优化
  • [IMPROVE] 胶囊体碰撞器属性重构,height 变为 cylinderHeight
  • [IMPROVE] 对插屏开启 Retina 适配,效果更好
  • [IMPROVE] 移除部分无用警告信息
  • [IMPROVE] 同步 Creator 2.x 中 Widget 的 Align Mode 选项
2020.03.09

V1.0.4版本

发布时间: 2020.03.09

Cocos Creator 3D 在 v1.0.3 版本中更新了原生平台支持,同时更新了很多重要的功能,其实是一个改动比较大的重要版本,那么在发布后也暴露出一些体验问题。基于此我们决定发布 v1.0.4 作为稳定性优化的版本,修复了暴露出来的重要问题。同时v1.0.4 也将是 Cocos Creator 3D 在 v1.0.x 阶段的最后一个版本,引擎团队已经从 2020 年新年伊始就投入到了 v1.1 的研发上,将会提供给广大开发者更强大的性能、更丰富的新特性和更好的编辑器体验。

重点功能介绍

1. 微信 PC 端小游戏支持

微信 PC 端小游戏已经开始灰度测试,而引擎侧已经在这个版本中做好适配,游戏如果打包为微信小游戏,到时候无需任何修改,直接可以在 PC 端运行。

2. 缓动系统优化

Tween 模块在 v1.0.3 中完成了和 Cocos Creator 2.x 版本 API 统一的任务,避免老用户对于使用方式不一致的困扰。在 v1.0.4 中我们继续优化,首先在 to 和 by 接口中添加了 onStart,onUpdate,onComplete 回调支持,具体使用参考下面的案例。

/** 缓动 Node,这里将缓动 Node 的 position 属性 */
tween(node)
.to(3, { position: new Vec3(10, 10, 10) }, { easing: 'bounceInOut' })
.to(3,
{ position: new Vec3(0, 0, 0) },
{
onStart: ()=> {
// Notify some other system or do stuffs
}
})
.union()
.repeat(2) // 执行 2 次
.start();

在上面的例子中,我们对一个 node 执行缓动,如果缓动过程中 node 被销毁的话会有不可预料的事情发生,有可能 position 数据被销毁导致崩溃。在 v1.0.4 之前用户需要在 node 销毁的同时,手动停止缓动动作,还是挺不方便的,也很容易埋下 bug。在 v1.0.4 中,如果缓动目标是 Node 类型,我们会自动监听销毁事件并主动停止和销毁缓动对象,开发者不需要做任何额外的操作。

3. 完善物理胶囊碰撞体支持

目前已支持在编辑器中对胶囊碰撞体进行编辑,需要注意的是,胶囊碰撞体支持 builtin 和 ammo 后端,如果选择 cannon 后端则无效。需要使用 cannon 后端的话,可以尝试用连续的多个球体上下摆放来模拟胶囊体,效果差不多,性能也会比较好。

4. 重要 Bug 修复

  • 之前论坛有不少反馈说 Mac 上使用 FBX 资源遇到导入错误,提示 fbx2gltf 库不兼容,这个问题我们通过在低版本 Mac 上编译 fbx2gltf 工具解决了问题,目前已支持 Mac OS X 10.12+。
  • 有不少开发者遇到编辑器升级到 1.0.3 后编辑器面板上各种小图标不见了的问题,这个问题是因为编辑器所在目录包含空格引起的,我们已经修复了。
  • 修复组件对象构造失败可能导致的场景数据丢失问题:这个问题在论坛中有不少开发者遇到过,我们之前一直未能重现,感谢(@oʍɯʎuǝɥɔ)提供的测试项目帮助我们找到了问题的根本原因。这个问题的根本原因仍然是循环依赖导致的脚本丢失,不过丢失的不是组件脚本,而是组件构造函数依赖的脚本,导致组件实例化失败,而我们没有处理这个错误进而损坏了场景数据,如果用户保存了错误的数据,就会导致场景再也无法打开。这个严重的问题相信在 v1.0.4 之后就会大幅度减少,而循环依赖的问题我们也计划在 v1.1 中继续优化。Cocos Creator 3D 目前比较容易出现循环依赖的主要原因是因为@property({type: XXX}) 这种装饰器写法会在解释脚本阶段立即执行,最终在脚本导入阶段变成了硬依赖,就使得这种类型声明变成了循环依赖的罪魁祸首。我们会尽力在 v1.1 找到更完善的解决方案。

详细更新内容

编辑器

  • [FEATURE] 新增 PC 微信支持
  • [FEATURE] 构建平台分包支持
  • [IMPROVE] 更新 Sprite 预制,将默认尺寸模式改为 Trimmed 模式
  • [IMPROVE] 限制地形 layer 数量上限为 4
  • [IMPROVE] 如果偏好设置的 ip 不存在,则使用第一个可用 ip
  • [IMPROVE] 兼容 mac 的 command 键多选关键帧
  • [FIX] 更新 fbx2gltf 到 v1.0.5,修复了 MacOSX 低版本(10.12+)不能导入 fbx 资源的问题
  • [FIX] 修复编辑器目录带有空格,会导致 icon 丢失的问题
  • [FIX] 修复构建后游戏插件脚本的加载顺序(保证优先于项目脚本)
  • [FIX] 修复构建 native 概率性出现 cocos-project.json 资源格式错误
  • [FIX] 修复 num-input 按下 up 按钮报错的问题
  • [FIX] 修复动画编辑器曲线无法保存的问题
  • [FIX] 修复动画编辑器分量主轨道选中问题
  • [FIX] 限制动画编辑模式下,层级管理器新建地形按钮不能点击(之前可以)
  • [FIX] 修复双击场景导致编辑器其他 panel 全选的问题
  • [FIX] 修复分量轨道未开启时的选中操作错误
  • [FIX] 修复动画编辑器切换节点显示问题
  • [FIX] 修复动画编辑器节点属性轨道出现滚动条后位置不准确的问题
  • [FIX] 修复多选关键帧后,在选中关键帧上右键菜单的删除功能
  • [FIX] 修复动画编辑器取消节点选中时的界面显示
  • [FIX] 修复动画编辑器多选关键帧后,点击选中关键帧会取消选中其他关键帧问题
  • [FIX] 修复 gltf 导入的时候dump material 因为 meta 验证而失效的问题
  • [FIX] 修复场景编辑器里粒子小窗口速度(speed)无法修改的问题
  • [FIX] 修复 inspector 上点击有子节点的节点上 Layer 旁边的 edit 按钮会提示是否应用到子节点(正确是修改后提示,而不是按下 edit 提示)
  • [FIX] 修复数据迁移问题,迁移数据时,分版本号判断;
  • [FIX] 修复微信引擎分离功能的 md5 以及版本号,添加定义;
  • [FIX] 修复华为打印证书指纹报错;
  • [FIX] 修复删除新增 component 无法撤销的问题
  • [FIX] 修复分量动画可能无法保存的问题
  • [FIX] 修复 assets 搜索模式下,树形区域可能跳动显示的问题
  • [FIX] 修复 assets 搜索模式下,显示锁定资源的时候,锁定标记位置不正常的问题
  • [FIX] 修复 windows 下创建自定义构建模版为只读的问题
  • [FIX] 解决发布版本搜索资源的情况下图标互相折叠的问题
  • [FIX] 修复 asset-preview 的切换选中与 assets 面板刷新时焦点资源不一致的问题
  • [FIX] 修复父子节点批量删除后 undo 不正确的问题
  • [FIX] 修复 quick-compile 不会自动编译第三方引擎的问题
  • [FIX] 修复 inspector 曲线缩略图缓存的问题
  • [FIX] 修复构建导出功能以及部分构建插件系统 bug
  • [FIX] 修复编辑器内 FileUtils getName 可能导致的死循环
  • [FIX] 修复 mac 上 effect-header 导入问题
  • [FIX] 动画编辑器修复 spriteframe 为空的情况下的样式丢失
  • [FIX] 修复动画编辑器选中丢失节点后,数据没有更新的问题
  • [FIX] 修复 gltf 创建挂点时没有处理模型节点嵌套的问题
  • [FIX] 修复动画组件丢失的情况会导致报错的问题
  • [FIX] 修复从 prefab 创建模型的时候数据会丢失的问题
  • [FIX] 修复名字带有 # 的图片无法使用 spriteframe 模式导入的问题
  • [FIX] 优化脚本导入时间
  • [FIX] 优化构建后 jsList 排序,保证顺序一致
  • [FIX] 优化动画编辑器框选,允许选中多个节点关键帧
  • [FIX] 禁止地形节点的旋转和缩放

引擎

  • [FEATURE] Ammo 支持胶囊体
  • [FEATURE] 支持物理 raycast 的掩码参数
  • [IMPROVE] 优化 Tween API:增加 onUpdate、onStart、onComplete 回调,节点销毁时关联的 tween 自动停止
  • [IMPROVE] 缩减引擎仓库包体
  • [FIX] 修复循环引用导致的组件对象构造失败以及进一步导致的场景数据损坏问题
  • [FIX] 修复缺失的物理同步问题
  • [FIX] 修复物理模块缺失情况下的预览功能
  • [FIX] 修复使用 render texture 时的摄像机尺寸问题
  • [FIX] 在 UC 浏览器上禁用 WebGL2
  • [FIX] 修复默认裁剪掩码在各个平台上的兼容问题
  • [FIX] 修复支付宝平台暂停游戏时的闪屏
  • [FIX] 修复文本部分显示问题
  • [FIX] 修复 Color.fromHEX 函数实现
  • [FIX] 修复 Cocos Play 平台下的 render pipeline 小问题
  • [FIX] 修复场景切换过程中可能导致的 UI 闪烁问题
  • [FIX] 修复 AnimationClip hash 计算可能引起的死循环问题
  • [FIX] 修复 Ammo 内部的内存泄露
  • [FIX] 纠正使用旋转的合图资源中的九宫格 uv 计算问题

文档

2020.01.20

V1.0.3版本

发布时间: 2020.01.20

这个版本可以说是 Cocos Creator 3D 自诞生以来最重要的一个版本,或者说是真正的完全体!因为从 v1.0.3 开始 Cocos Creator 3D 正式支持原生平台。

除了继续扩大平台支持以外,在易用性和上手门槛上我们也做了大量的优化工作,以及无数细节上的功能增强,相信这个版本可以满足绝大部分轻度休闲品类游戏的制作。

在 2020 年春节后,引擎组将继续投入到 v1.1 的开发当中去,届时我们会有更多重要的功能特性更新以及性能优化,将会不断提升 Cocos Creator 3D 产品的优势以及对品类的支撑能力。

重点功能介绍

1. 原生平台支持

从 v1.0.3 开始,大家可以正式打包 iOS、Android、Windows、Mac OS X 原生包,继续基于 Creator 一直以来的原生积累,提供给大家最统一的跨平台开发体验。原生发布的详细使用说明请参考发布文档

2. 小游戏平台支持

我们继续新增了 Cocos Play、小米快游戏、支付宝小游戏三个小游戏平台的支持,请大家参考各个平台的发布文档

3. Async Await !

对!我们响应大家的呼唤,提前了 Async Await 的支持,只需要在构建时,勾选 “异步函数”/"Async Functions" 就可以自由在项目中使用了。除此之外,脚本系统还增加了一些新的特性支持,比如
- 可选链(Optional Chaining)支持
- 空值合并(Nullish Coalescing)支持
- 移除 INode 和 IBaseNode
- 某些循环引用行为将在运行检测并作出警告
- 增加 core-js polyfills 来帮助部分平台补全 ES6 支持

4. 动画编辑器优化

v1.0.3 动画编辑器增加了分量动画功能,支持针对 Vec2、Vec3、Vec4、Color 等类型的分量拆分轨道制作动画帧。同时还增加了同类型的属性轨道的复制、粘贴功能(目前仅支持单轨道);在选中多个关键帧后高亮中间线条,并支持拖拽中间线条来移动关键帧。

5. 增加 Ammo.js 物理模块

为了尝试提供更多的可能性,我们增加了 Ammo.js 物理后端,会在将来支持 wasm 构建出的 Ammo 物理引擎(原生实现是 bullet),将会给物理游戏赋予更高的性能和更多可能性。物理方面,我们还初步增加了胶囊体支持(暂时仅支持 builtin)。

6. 重构 Tween 模块

之前 Tween 模块的使用方式不是非常友好,在内部的审核和讨论后,我们决定将这个模块的 API 和使用方式和 Cocos Creator 2.x 统一起来,在 v1.0.3 中已完成重构,请参考文档了解具体的使用方法。

7. UI 功能强化

UI 做了大量的功能强化工作,比如:
- Editbox 重构和跨平台支持优化
- 透明度级联组件 UIOpacity
- Mask 反向遮罩功能
- 多点触摸开关功能

8. 带搜索功能的添加组件窗口

在节点 Inspector 中,用户选择添加组件时,将看到组织更清晰的组件选择面板,还可以通过搜索来快速寻找想要添加的组件。

部分注意事项和 Breaking Changes

  1. Ammo.js 物理后端已知问题
    • 刚体球和盒碰撞时存在抖动(会影响到表现和事件)
    • 物理材质的回弹系数比较大时,会导致事件不准确
    • 使用物理 ammo.js 时,刚体组件的 Factor 属性在底层的中的表现作用在力和冲量上,与 cannon.js 不同( cannon.js 作用在速度上面,未来可能会调整成一样的)
  2. 材质和合批
    • 蒙皮模型和动态合批的开关全部挪到了材质里,虽然导入 glTF 生成的材质和目前项目已有的材质做了迁移,但任何接下来用户直接新建的材质,都需要在材质里手动指定是否要开启蒙皮或合批
    • 由于资源化渲染管线对启动顺序的影响,所有用户脚本内,在 require 时期创建的 material 将全部失效,最后显示效果为纯黄色(effect 丢失),需要挪到 onLoad 等时期再创建
  3. 平台特性支持
    • 除了微信小游戏平台外,暂时还不支持小米和支付宝小游戏平台上的分包功能,此功能会在以后版本完善。
    • 在打包微信小游戏过程中,如果你勾选了引擎插件功能,会发现有报错,请按照这个说明贴中的方法进行修复,这些修复也将合并在下一个版本中。
  4. TexturePacker 支持:3D 引擎中不再支持 3.x 版本以下的图集格式,导入是会报错的,推荐使用的版本是 4.x。

编辑器

  • [FEATURE]支持原生平台构建(Mac、Windows、Android、iOS)
  • [FEATURE]支持 Cocos Play、小米快游戏、支付宝小游戏三个小游戏平台支持
  • [FEATURE]动画编辑器重构,新增 Vec2、Vec3、Color 的分量动画曲线支持
  • [FEATURE]动画编辑器增加同类型的属性轨道复制/粘贴功能
  • [FEATURE]选中关键帧后高亮中间线条,并允许拖拽中间线条移动关键帧
  • [FEATURE]支持在构建时勾选异步函数来开启 Async Await 等函数支持
  • [FEATURE]新增带搜索功能的添加组件窗口
  • [FEATURE]完善实验室版本地形系统,优化编辑体验,地形数据资源化
  • [FEATURE]添加 UI 空间的对齐按钮(场景面板顶部 Toolbar)
  • [FEATURE]Inspector 面板允许复制组件和只粘贴值
  • [FEATURE]为模型导入切割出的子动画提供 FPS 设置功能
  • [FEATURE]新增 RenderTexture 资源类型(.rt)
  • [FEATURE]立方体贴图导入器添加贴图参数设置
  • [FEATURE]Material 面板上新增定位 Effect 文件的功能
  • [FEATURE]层级管理器面板和资源管理器面板的右键菜单中新增拷贝 uuid 和 path 功能
  • [FEATURE]增强地形编辑功能
  • [FEATURE]新增资源面板右键菜单及功能:在文件夹内搜索
  • [FEATURE]新增其他小游戏平台的自定义构建模板支持
  • [FEATURE]增加了 core-js polyfills,在各个平台完善 ES6 支持
  • [FEATURE]新增实验室功能:资源化的 Programmable Rendering Pipeline
  • [IMPROVE]重构构建流程,完全插件化,让平台扩充更轻松
  • [IMPROVE]重构 Undo/Redo 系统
  • [IMPROVE]独立实现编辑器依赖的数学库
  • [IMPROVE]修改 RenderableComponent的材质动画属性为 materials
  • [IMPROVE]在属性检查器中编辑图片资源时,对应的 sub asset 也一同显示可以编辑
  • [IMPROVE]将 gizmo 的材质引用变为运行时的材质实例
  • [IMPROVE]完善场景内材质资源的迁移流程,支持 sub asset 级迁移
  • [IMPROVE]统一新建资源和节点的名称格式
  • [IMPROVE]优化 FBX 导入时的贴图查找算法
  • [IMPROVE]模型资源 FBX & glTF 的 inspector 面板支持多语言
  • [IMPROVE]FBX 和 Javascript 资源导入器的多语言提示
  • [IMPROVE]对包含蒙皮模型的 glTF 模型导出的材质中自带骨骼动画支持
  • [IMPROVE]优化了某些导入器的报错消息,附加上了被导入资源的 UUID
  • [IMPROVE]防止资源面板数据迁移时报错的情况下导致的死循环问题
  • [IMPROVE]场景面板 Toolbar 插件化
  • [IMPROVE]节点编辑状态下优化材质编辑的方式,改为在同一个界面同时显示组件和材质信息
  • [IMPROVE]加快创建 prefab 节点时层级面板上的显示速度
  • [IMPROVE]减少生成多节点时的查询次数
  • [IMPROVE]防止一些情况下在场景初始化之前发送 ipc 请求
  • [IMPROVE]新增私有节点时层级面板增加容错机制
  • [IMPROVE]将摄像机预览面板从开发者菜单移到面板菜单下
  • [IMPROVE]在构建时自动检测引擎修改以及重新构建引擎
  • [IMPROVE]增加打开版本不匹配或项目类型不匹配时的警告
  • [IMPROVE]增加偏好设置面板的 saving 提示
  • [IMPROVE]优化退出动画编辑模式时面板闪烁的问题
  • [IMPROVE]在脚本资源 library 缺失时不报错
  • [IMPROVE]优化各个面板使用的 ui 和图标
  • [FIX]修复粒子 Gizmo 位置和渲染可能不正确的问题
  • [FIX]修复 prefab 里的动画编辑退出后 info bar 消失的问题
  • [FIX]修复了材质属性面板贴图可能不显示的问题
  • [FIX]修复了节点折叠状态在切换编辑模式后还原不正确的问题
  • [FIX]修复了某些特殊的 binary 格式 glTF 模型无法解析的问题
  • [FIX]修复了某些情况下,构建脚本时脚本会被重复包含的问题
  • [FIX]修复了循环引用提示功能里面,对 type-only-used 标识符的错误处理
  • [FIX]修复动画挂点无法正确获取的问题
  • [FIX]修复 FBX 属性检查器页面 dump material 无法使用的问题
  • [FIX]修复资源移动因 .meta 文件存在而被阻止的问题
  • [FIX]修复 Mac 平台构建的时候资源可能被删除的问题
  • [FIX]修复粒子 multiply effect 计算错误
  • [FIX]修复 prefab 节点在丢失资源的情况下 undo 报错
  • [FIX]修复删除部分组件后 undo 报错
  • [FIX]修复动画编辑中无法复制资源关键帧的问题
  • [FIX]修复动画编辑器中对 sprite frame 属性进行 undo 的问题
  • [FIX]修复取消选中节点后动画编辑器的状态显示
  • [FIX]修复动画编辑器中材质的贴图属性无法打关键帧的问题
  • [FIX]修复退出动画编辑,prefab 会重新生成节点的问题
  • [FIX]修复场景相机离模型很近时,无法使用移动 Gizmo 的问题
  • [FIX]修复粒子组件曲线角度值的显示

引擎

  • [FEATURE]完善物理多后端支持,新增 Ammo.js 后端
  • [FEATURE]将 Tween API 与 Cocos Creator 2.x 同步
  • [FEATURE]SpriteComponent 组件新增 tiled 模式
  • [FEATURE]给 PhysicsSystem 添加 useFixedTime 属性以避免事件不准确和抖动的问题
  • [FEATURE]Builtin 物理中新增胶囊体(暂不支持其他物理引擎)
  • [FEATURE]新增 UIOpacity 组件用于实现 UI 节点的透明度级联
  • [FEATURE]在 Camera 组件中提供 3D 世界坐标系转换到 UI 节点坐标系的方法 convertToUINode
  • [FEATURE]Mask 支持使用 Graphics 作为蒙版(使用方法可参考 test-cases-3d)
  • [FEATURE]Mask 组件支持反向遮罩
  • [FEATURE]新增多点触控开关:macro.ENABLE_MULTI_TOUCH
  • [FEATURE]动画系统支持分量和 Uniform 属性作为动画数据
  • [FEATURE]实验室版本可编程渲染管线初步实现
  • [IMPROVE]优化引擎构建流程,缩减引擎构建包体
  • [IMPROVE]重构 Model 的内存管理模式
  • [IMPROVE]支持计算骨骼动画的包围盒
  • [IMPROVE]重构 AnimationClip,使用动画数据仓库来增强复用和优化动画数据组织
  • [IMPROVE]新增内部材质实例,便于共享和实例化
  • [IMPROVE]节点 TRS 事件改为复用 Node.TransformBit 中的位标记
  • [IMPROVE]将 UIComponent 的 priority 属性移动到 UITransform 组件上,新建 2D 节点默认添加 UITransform 组件
  • [IMPROVE]在 Layout 的排列方向改变时重新调整一次子节点的位置以对齐
  • [IMPROVE]优化 UIStaticBatchComponent 的 API 设计以及添加 clear 操作
  • [IMPROVE]使用 materials 属性取代 sharedMaterials 用于动画编辑
  • [IMPROVE]移除 INode 和 IBaseNode 接口
  • [IMPROVE]重构节点中 UI 相关属性的组织方式,统一迁移到一个 NodeUIProperties 类型属性 _uiProps 下
  • [IMPROVE]更新 Cannon 到 1.0.5 版本,修复 trigger 事件不准确问题
  • [IMPROVE]复用 canvas 来管理 Label 贴图
  • [IMPROVE]同步 Creator 中的 Editbox 组件实现和跨平台实现
  • [IMPROVE]重构引擎启动流程以适应可编程渲染管辖的加载需求
  • [IMPROVE]优化 Profiler 信息的文字尺寸计算
  • [IMPROVE]UICoordinateTracker 增加对 Camera 更新的监听和重新计算
  • [IMPROVE]在 shader 完成 link 之后立即卸除并释放
  • [IMPROVE]优化骨骼动画的材质编译和包围盒计算
  • [FIX]修复 UI 静态合批组件可能导致的 buffer 越界问题
  • [FIX]在部分不支持 gl.UNSIGNED_INT 的平台将顶点 index 的格式适配到 short
  • [FIX]修复贴图为空时的插屏逻辑
  • [FIX]在部分不支持的平台关闭 WebGL 2.0 和 VAO 的使用
  • [FIX]修复点光源的剪裁
  • [FIX]修复阴影在部分平台上由于 z-fighting 导致的闪烁问题
  • [FIX]修复 Layout 类型变化时可能导致的错误
  • [FIX]修复深度缓冲在部分小游戏平台上的兼容性问题
  • [FIX]修复多 UI Canvas 共存时的渲染闪动问题
  • [FIX]修复 ScrollView 运动过程中可能产生的贴图拼接缝隙问题
  • [FIX]修复 ScrollView 的 elastic 属性表现
  • [FIX]修复 Label 在 shrink 模式下宽度仍然越界的问题
  • [FIX]修复重置 ImageAsset 时的错误表现
  • [FIX]修复传递 w 为 0 时导致的 Quat 构造结果错误
  • [FIX]修复 ArrayBufferView 在部分设备上的动画数据解析问题
  • [FIX]修复 SpriteFrame 代码中的不统一性
  • [FIX]修复物理 body 在添加或移除 shape 后被自动重新启用的问题
  • [FIX]修复粒子拖尾的一些渲染问题
  • [FIX]修复编辑器窗口下场景视图并非半透明的问题
  • [FIX]修复一个由对象释放引起的混合表现错误(导致 UI 闪屏)
  • [FIX]修复 iOS Safari 下导航栏下拉可能导致的触摸位置错误问题
  • [FIX]避免 Loader 中可能出现的 ownerQueue 为空的问题
  • [FIX]修复对骨骼的 raycast 计算
  • [FIX]修复骨骼模型的释放问题
  • [FIX]修复了当存在全局标识符 cc 声明时(如 import * as cc from 'cc')脚本执行报错的问题
  • [FIX]修复了项目使用的引擎类型声明文件(cc.d.ts)某些错误
2019.12.16

V1.0.2版本

发布时间: 2019.12.16

重点功能介绍

1. 新增 OPPO、vivo、华为平台支持

v1.0.2 最重要目标之一就是增加小游戏平台的支持,在这个版本中,我们正式支持了 OPPO 小游戏、vivo 小游戏和华为快游戏平台。

Cocos 还在继续扩展平台支持能力,原生平台和支付宝平台在 v1.1 开发版本中已经成功运行起来,敬请期待!

2. UI Static Batch

从 v1.0.2 开始,在 UI 节点上,你可以挂载一个 UIStaticBatchComponent 组件(参考文档),UI 静态合批组件是一个提升 UI 渲染性能的组件,当调用 markAsDirty 方法时,引擎就会在当前帧渲染过程中收集该 UI 节点子树(除模型以及 Mask 和 Graphices)下所有的渲染数据,存储为一个静态的 IA 渲染数据,并在后续的渲染流程中使用静态数据进行渲染,不再遍历其节点树。此后的坐标变换将不再生效,当你需要修改静态数据的时候,可以再次调用 markAsDirty 来重新触发渲染数据收集。

3. 微信引擎分离插件功能

我们已在框架层支持微信的引擎插件功能,以尽可能降低小游戏平台的加载耗时,可以在构建时勾选“分离引擎”选项。

4. API 改动说明

为了避免物理事件不准确和物理节点的抖动,PhysicsEngine 中添加 useFixedTime API 来设置是否使用固定的时间步长进行模拟,感谢@MFshangying 的论坛反馈

编辑器  

  • [FEATURE]Inspector 中点击添加组件时,新增组件分类和搜索功能
  • [FEATURE]模型动画资源面板新增支持缩放坐标轴、支持更改 FPS、支持拖拽切割动画
  • [FEATURE]支持资源和节点的剪切操作
  • [FEATURE]项目设置中增加项目全局 layer 配置
  • [FEATURE]新增 effect 头文件资源类型(chunk),所有内置头文件全部资源化
  • [FEATURE]偏好设置中新增实验室标签页
  • [FEATURE]Effect 资源编译加入无效代码剔除流程
  • [FEATURE]为 glTF 导入器的报错信息提供中文版本
  • [FEATURE]开放各个小游戏平台的插屏设置
  • [IMPROVE]优化 glTF 导入器以保障更优的 glTF 一致性测试结果
  • [IMPROVE]优化 glTF 和贴图的导入逻辑,使用异步读取避免卡顿
  • [IMPROVE]避免 glTF 导入过程中出现未命名的动画 clip
  • [IMPROVE]优化 FBX2glTF 转换失败时的报错信息
  • [IMPROVE]优化 Effect 的语法检查能力
  • [IMPROVE]提供通用顶点着色器的 general-vs.chunk
  • [IMPROVE]简化构建 JS 和 CSS 资源的流程
  • [IMPROVE]更新 inspector 内部组件命名
  • [IMPROVE]优化 inspector 相关的 Drag n Drop 组件逻辑
  • [IMPROVE]针对 NPOT 图片设置 wrap mode 时做出警告
  • [IMPROVE]构建过程中添加了脚本构建以及合图编译的 debug 信息
  • [IMPROVE]启动过程中检查项目是否合法,不合法的话报错并关闭
  • [IMPROVE]移除构建时对游戏名称的中文限制
  • [FIX]解决层级和资源面板在高分辨率屏幕下的滚动跳跃问题
  • [FIX]修复 inspector 组件重命名替换的遗漏
  • [FIX]修复 Dashboard 切换 tab 中的一处判断错误
  • [FIX]修复动画编辑器界面 speed 更改后的数据更新问题
  • [FIX]修复动画编辑器中 active 属性轨道动画无效的问题
  • [FIX]修复动画编辑器左键移除关键帧的问题,以及增加关键帧移除的容错
  • [FIX]修复切换场景时可能存在的选中相同 uuid 节点的问题
  • [FIX]修复替换插屏功能中是否保存水印数据存储错误的问题
  • [FIX]修复 UIComponent 组件的显示名称以及单双击操作
  • [FIX]修复 bitmap front 的 meta 更新问题
  • [FIX]修复快速重复复制同一个资源 DB 可能导入失败的问题
  • [FIX]修复取色器窗口不响应回车确认事件的问题
  • [FIX]修复编辑多个粒子时,展开状态没有被正确保留的问题
  • [FIX]修复多个粒子节点删除时场景面板里的粒子控制面板不会消失的问题
  • [FIX]修复无法获取到 menu 参数的问题
  • [FIX]修复编辑器打开的时候会白一段时间的问题
  • [FIX]修复引擎启动时窗口大小为 0 引发的报错
  • [FIX]修复刷新编辑器或弹出面板时资源未保持选中的问题
  • [FIX]修复渐变组件初始化值没有传入的问题
  • [FIX]修复偏好设置中微信开发者工具在 mac 无法选择路径的问题
  • [FIX]修复 node command not found 的问题
  • [FIX]修复 RGBE 格式 cubemap 的生成问题
  • [FIX]修复数字输入框的精度和步长空值判断
  • [FIX]修复 OPPO 小包模式的打包问题
  • [FIX]修复 OPPO/vivo/Huawei 平台的打包替换插屏资源的功能
  • [FIX]修复 Camera 的 visibility 下拉框未显示自定义 layer 的问题
  • [FIX]修复创建自定义构建模板报错的问题
  • [FIX]修复微信子域文件夹拷贝问题
  • [FIX]修复微信子域不存在时的文件夹未清空问题
  • [FIX]修复 render texture 资源导入问题
  • [FIX]修复 UI kit 在 Mac 全屏模式下的体验问题(感谢 @傻狍子 的反馈

引擎

  • [FEATURE]提供 2D 相机下映射并同步 3D 节点位置的通用组件
  • [FEATURE]Sprite 新增 Tiled 渲染模式
  • [FEATURE]支持多于 32 个 Effect 宏定义
  • [FEATURE]兼容 iPadOS 的桌面模拟模式
  • [IMPROVE]重构 Model 内存管理策略
  • [IMPROVE]优化更新 Standard 材质接口
  • [IMPROVE]优化骨骼动画模型包围盒计算
  • [IMPROVE]将 UI 渲染组件的 priority 属性迁移到 UITransform 组件上
  • [IMPROVE]将 Node TRS 更新事件从字符串更改为位标记,兼容旧版本代码
  • [IMPROVE]优化循环引用导致组件类型丢失时的报错信息,帮助用户找到引发错误组件
  • [IMPROVE]Sprite 组件上保留用户设置的 SpriteAtlas
  • [IMPROVE]切换 Layout Alignment 的时候在非对齐方向和父节点同步一次位置,更方便切换
  • [IMPROVE]优化引擎内的无依赖 Playground 实现
  • [IMPROVE]优化 Particle 渲染模式在材质中的设置
  • [IMPROVE]避免生成 shader 中未开启逻辑中的 UBO 对应 BindingLayout
  • [IMPROVE]针对空场景优化管线内每帧执行的函数实现
  • [IMPROVE]更好的检测深度贴图是否支持的方法
  • [IMPROVE]物理引擎中添加 useFixedTime API 来避免物理事件不准确和抖动
  • [IMPROVE]将 UIStaticBatchComponent collect 属性改为 collectMark 属性
  • [IMPROVE]增加用于骨骼动画计算的贴图尺寸
  • [FIX]修复 RenderScene 中对 Light 的管理
  • [FIX]修复渲染器中对默认主光源的管理
  • [FIX]修复插屏贴图 Base64 字符串为空时的错误
  • [FIX]修复 OPPO、支付宝等小游戏平台上无法获取和更新第 0 位 uniform 的问题
  • [FIX]修复部分平台不支持 OES_element_index_uint 扩展时模型无法渲染的问题
  • [FIX]在 OPPO 等 Runtime 平台上禁用 VAO
  • [FIX]修复 SpotLight 的剪裁问题
  • [FIX]修复父节点为 undefined 时 _onPreDestroyBase 的逻辑判断错误
  • [FIX]修复 SkinningModelComponent 和 ModelComponent 的初始化和启用逻辑
  • [FIX]修复 Canvas 组件启动时 camera viewport 没有初始化的问题
  • [FIX]修复 AudioBufferSourceNode 的 start 被调用多次导致的报错问题
  • [FIX]修复不同层级 Canvas 渲染时可能排序不正确的问题

文档和案例

2019.11.20

V1.0.1版本

发布时间: 2019.11.20

重点功能介绍

  • 微信插屏配置:正式支持微信插屏配置,只需要构建时选择替换插屏,提交项目信息即可自动替换微信插屏图片,可以选择在插屏下方保留一个不显眼 Powered by Cocos Creator 3D 水印,如果您这么做我们会非常感激。
  • 支持物理材质编辑:目前的功能还比较简单,只支持 Friction 和 Restitution。
  • Effect 资源面板:Effect 的资源面板现已支持预览编译后的 shader 代码,并支持可视化编辑 shader 的每个 define。
  • 优化导入和数据迁移的效率 我们测试的一个超大型项目,数据迁移过程中的内存使用从 4-6 GB 降低到了 0.5-1.2GB,时间从降低到了原本的 10 - 30%。
  • Raycast 支持 v1.0.1 在物理模块 API 中支持对 Collider 进行 Raycast,示例代码如下:
// 找到所有结果 
PhysicsSystem.instance.raycast(worldRay, Layers.Enum.DEFAULT, maxDistance, queryTrigger); 
// 找到最近的匹配结果,两个 API 性能是一样的 PhysicsSystem.instance.raycastClosest(worldRay, Layers.Enum.DEFAULT, maxDistance, queryTrigger);

编辑器

  • [FEATURE] 偏好设置里支持指定不同类型资源的打开程序:代码类资源,图片类资源
  • [FEATURE] 修改节点 layer 属性时,询问是否递归修改所有子节点
  • [FEATURE] FBX 以及 glTF 数据不存在的时候显示默认值
  • [FEATURE] 对 Meta 增加换行符检测,如果文件内有 CRLF 则默认使用 CRLF 换行,没有则使用 LF
  • [IMPROVE] 优化了资源导入、迁移的速度
  • [IMPROVE] 优化盒子碰撞器的编辑操作体验
  • [IMPROVE] 支持全局的自定义引擎位置配置
  • [IMPROVE] 在编辑器环境下不预编译 shader
  • [IMPROVE] 将光源组件集合在独立的组件子菜单项中
  • [IMPROVE] 优化资源搜索面板使用以及统一 icon 数据管理
  • [IMPROVE] 去掉新建脚本名称中的空格并减少树形缩进
  • [IMPROVE] 移动资源时增加了一个是否覆盖原文件的对话框
  • [IMPROVE] 优化 prefab 资源丢失时的展示
  • [IMPROVE] 防止 prefab 不指向自己
  • [IMPROVE] 优化资源很多资源树很长的情况下滚动有上下空白区的问题
  • [IMPROVE] 优化文件夹在自身粘贴的操作
  • [IMPROVE] 去掉删除资源时的因文件系统产生的阻塞
  • [IMPROVE] 增加复制已删除资源时的容错
  • [IMPROVE] 对资源预览面板中前进后退操作增加容错判断
  • [IMPROVE] 优化 SphereLight 组件界面
  • [IMPROVE] 动画编辑器选中关键帧后自动选中对应节点,选中对应的属性轨道
  • [IMPROVE] 动画编辑器 clip 发生变化后检查并选中关键帧
  • [IMPROVE] 优化动画编辑器中 Rotation 显示
  • [IMPROVE] 记忆节点树层级的展开、折叠状态,支持 alt 键全部折叠或展开
  • [IMPROVE] 数组折叠 UI 上 +/- 有歧义,修改为倒三角
  • [IMPROVE] 优化 fbx/gltf 资源的材质编辑效果
  • [IMPROVE] 优化 fbx/gltf 资源中的贴图导入流程
  • [IMPROVE] 优化构建面板操作以及支持单独编译引擎
  • [IMPROVE] 构建时清空 Loader 缓存
  • [IMPROVE] 调整编辑器 Camera 的近裁剪面为 0.1
  • [IMPROVE] 禁止 SkeletonAnimationComponent 的 clips 的编辑
  • [IMPROVE] 场景拖拽的时候,不响应任何其他的事件
  • [IMPROVE] 添加反序列化容错
  • [FIX] 修复项目配置无法被保存的问题
  • [FIX] 修复资源迁移的时候导致的内存泄漏
  • [FIX] 修复资源迁移失败导致死循环的问题
  • [FIX] 修复场景未做任何修改却产生数据差异提示需要保存的问题
  • [FIX] 修复构建过程中由于内存增长导致奔溃的问题
  • [FIX] 修复场景加载带有 MissingScript 的数据卡死问题
  • [FIX] 修复场景文件不存在时保存场景无效的问题
  • [FIX] 修复 HDR 模式下的 gizmo 渲染问题
  • [FIX] 修复节点移除时子节点的 gizmo 仍然残留在编辑器上的问题
  • [FIX] 修复 gizmo 的受光表现
  • [FIX] 修复 undo 后阴影丢失的问题
  • [FIX] 修复并升级 glTF importer 的问题
  • [FIX] 修复某些 glTF-embedded 资源导入数据错误的问题
  • [FIX] 修复包含内嵌贴图资源的 FBX 文件的导入问题
  • [FIX] 修复模型导入时 normal 和 tangents 数据导入问题
  • [FIX] 修复多 UV 模型的导入问题
  • [FIX] 修复导入模型时的贴图搜索算法
  • [FIX] 修复资源面板列表偶现显示不正确的问题
  • [FIX] 修复导入操作系统上创建的文件夹时没有保留文件夹里 meta 文件的问题
  • [FIX] 修复父资源拖拽进 inspector asset 编辑框无效问题
  • [FIX] 修复 uuid 冲突的时候,误将旧资源 uuid 替换的问题
  • [FIX] 修复刷新数据时资源面板中选中的文件夹和根节点文件夹折叠状态不准确的问题
  • [FIX] 修复 ui prefab 从资源还原时场景不显示的问题
  • [FIX] 修复 prefab 还原过程中 Node 类型对象发生的引用错误问题
  • [FIX] 修复 Effect 资源的 define 提取问题
  • [FIX] 修复材质 PipelineStates 没有读取 Effect 文件中默认值的问题
  • [FIX] 修复 TextureCube 删除部分子资源时报错的问题
  • [FIX] 修复框选动画编辑器关键帧时的问题
  • [FIX] 修复动画编辑器 duration 在移动时可能出现的位置不准确
  • [FIX] 修复动画编辑器更改 sample 后当前控制杆的更新
  • [FIX] 修复动画编辑器中丢失属性无法移除以及点击报错问题
  • [FIX] 修复动画编辑器选中关键帧移动一次后移动其他帧的问题
  • [FIX] 修复动画编辑器选中关键帧后直接移动选中的多个关键帧
  • [FIX] 修复动画编辑器 duration 在修改帧数后显示异常
  • [FIX] 修复动画编辑器移除关键帧后依旧显示的问题
  • [FIX] 修复动画编辑器按 Ctrl 键无法多选关键帧的问题
  • [FIX] 修复刷新编辑器后 inspector width 取值不正确的问题(可能导致材质面板异常)
  • [FIX] 修复动画编辑器更新事件帧数据错误
  • [FIX] 修复动画编辑器加载状态管理错误
  • [FIX] 修复 inspector 中编辑数据时的可能发生的报错
  • [FIX] 修复 inspector 中 node 编辑框双击跳转问题
  • [FIX] 修复数字输入框值变化的精度、最大最小值控制的问题
  • [FIX] 修复节点 layer 属性值被序列化为字符串的问题
  • [FIX] 修复 Camera Preview 黑屏的问题
  • [FIX] 修复程序关闭的时候 profile 数据可能未保存的问题
  • [FIX] 修复 ui 组件 clear 按钮不显示
  • [FIX] 修复 prefab 在动画编辑状态下,inspector 闪烁的问题
  • [FIX] 修复层级面板取消关闭时 loading 遮罩一直存在的问题
  • [FIX] 修复微信开发者工具设置方式
  • [FIX] 修复构建微信时未保留原有的子域文件夹问题
  • [FIX] 修复微信子包内包含图集时资源可能会丢失的问题
  • [FIX] 修复模板文件在编辑器打包后创建出来的是只读文件的问题

引擎

  • [FEATURE] 属性支持独立的 type decorator: @integer, @float, @string, @boolean, @type
  • [FEATURE] 给 Sprite 组件添加灰度模式
  • [FEATURE] 新增微信 SubContextView 组件,用于配合 Creator 生产的子域工程使用
  • [FEATURE] glTF 格式支持 khr-draco-mesh-compression
  • [FEATURE] 内建材质支持顶点色
  • [IMPROVE] 使用二进制格式存储并优化骨骼动画序列化后的尺寸
  • [IMPROVE] 大幅降低 Profiler 在渲染过程中的性能损耗
  • [IMPROVE] 复用材质实例,单独处理 PSO 状态变化的更新,优化内存和性能
  • [IMPROVE] 统一 SkeletalAnimationClip 功能到 AnimationClip 中(包含数据迁移)
  • [IMPROVE] 支持最高 32 个 shader 宏定义
  • [IMPROVE] 优化 shader 中的对运行环境支持精度的判断
  • [IMPROVE] 完善 RenderScene raycast 功能
  • [IMPROVE] 防止在父节点生效或禁用过程中修改相关的节点树
  • [IMPROVE] 在基于物理系统的 Transform 同步完成后发送碰撞检测相关事件
  • [IMPROVE] 增加 geometry 中的相交判断 API 并修复部分问题,新增 line_sphere, line_aabb, line_obb
  • [IMPROVE] 优化 Widget 组件对百分比数据的保存方式和编辑器呈现(包含数据迁移)
  • [IMPROVE] 优化 Skybox 在场景加载过程中的内存创建
  • [IMPROVE] 在音频成功播放后取消不必要的事件监听
  • [FIX] 修复模型动态批处理只支持十个节点的问题
  • [FIX] 禁止向场景中添加组件
  • [FIX] 修复节点 setWorldScale 计算错误
  • [FIX] 修复节点 translate 计算错误
  • [FIX] 修复 Tone mapping 和阴影渲染
  • [FIX] 修复 PSO 管理导致的骨骼动画阴影错落问题
  • [FIX] 修复部分设备精度问题导致的 WebGL1 下的渲染错误
  • [FIX] 在微信环境下禁用 VAO 以避免部分机型下的渲染丢失问题
  • [FIX] 修复微信环境下部分 GL 常量不存在的问题,使用值代替索引
  • [FIX] 修复部分情况下微信平台音频无法播放和音量控制无效的问题
  • [FIX] 修复粒子拖尾在 UI 下无法显示的问题
  • [FIX] 修复粒子拖尾的计算问题
  • [FIX] 修复粒子拖尾变形的问题
  • [FIX] 修复粒子 limit velocity 模块的表现问题
  • [FIX] 修复模型属性初始化顺序问题
  • [FIX] 修复模型资源销毁后骨骼动画数据可能丢失的问题
  • [FIX] 修复对 GLTF 的 cubic spline 动画插值支持
  • [FIX] 修复 UI ScrollView 的回弹效果
  • [FIX] 修复 UI 节点在微信下的概率性排序问题
  • [FIX] 修复九宫格贴图在旋转状态下的渲染错误
  • [FIX] 修复 Widget 对节点树事件监听管理导致的对已销毁 Widget 进行计算处理的问题
  • [FIX] 修复常驻 Canvas 节点在切换场景时导致的摄像机移除问题
  • [FIX] 修复基于 Kinematic 的物理同步
  • [FIX] 修复禁用的 RigidBody 组件仍然生效的问题
  • [FIX] 修复地形中类型定义的错误
  • [FIX] 修复 TS WebGL 对象类型提示
  • [FIX] 修复微信插屏会缩小以及横屏状态下尺寸判断错误的问题
  • [FIX] 修复 RenderScene API 注释笔误

文档和案例

  • [Sample] 新增完整游戏弹弹乐 3D项目,后续会增加教程
  • [Sample] 新增物理小车 Demo
  • [Sample] 新增下落球球 Demo
  • [Sample] 新增滚动小球 Demo
  • [Sample] 新增吞噬黑洞 Demo
  • [DOC] 新增 PageView 的使用文档
  • [DOC] 新增内置 shader 变量的文档
  • [DOC] 新增 AutoAtlas 资源的使用文档
  • [DOC] 新增动态合批使用文档
  • [DOC] 新增压缩纹理使用文档
  • [DOC] 增加 Canvas clearFlags 属性的说明
  • [DOC] 优化构建选项说明
  • [DOC] 优化 Effect 格式文档
  • [DOC] 完善模型资源的使用介绍(骨骼动画裁剪)
  • [DOC] 修复一些文档中的错误

2019.10.16

V1.0.0版本

发布时间: 2019.10.16

在 2D 和 2.5D 游戏领域以及各类小游戏平台上,Cocos Creator 已成为首屈一指的游戏开发引擎。秉承着 Cocos 一贯的低成本,低门槛,高性能,跨平台等产品特性,Cocos Creator 3D 旨在成为开发者创作 3D 游戏的新选择。

  • 以数据驱动和组件化作为核心的游戏开发方式,高效的工作流能够让团队成员完美协作,极速开发,加速迭代,提高收入
  • 易学易用的编辑器,大大降低了 3D 游戏的入门门槛
  • 轻松跨平台,一次创建,即可发布到原生( v1.0.0 暂不支持)、Web、小游戏等平台,并保持超高性能,真正实现一次开发,全平台运行,最大化游戏产品的可见度和成功概率

Cocos Creator 3D 功能特点

一体化 3D 编辑器,带来轻量易用的创作体验

Cocos Creator 3D 在 Cocos Creator 2D 多年编辑器框架上进行了重构、拓展和升级。

  • 全新界面设计,更加简洁清晰
  • 资源系统升级,增强对大项目的支持,更加轻量可靠
  • 模块之间代码隔离,纯消息驱动,更加稳定
  • 启动速度大幅提升,操作体验更上一层楼
  • 插件系统彻底模块化,迎接更强大的插件机制

Cocos Creator 3D 便利的编辑器体验,还包括:

  • Camera 预览面板
  • 资源缩略图面板
  • 节点和组件的批量编辑
  • 动画编辑器可以直接编辑粒子和模型材质属性
  • 支持压缩纹理
  • 自动合图功能
  • 支持 JSON 合并,缩减包体

完善的功能特性,带来更好的 3D 游戏表现

Cocos Creator 3D 首次真正将基于物理渲染全面带到了小游戏中,不仅支持 PBR 材质,还将光源系统和渲染统一升级为基于物理的度量衡和算法。有了这套真实感渲染引擎和材质系统,相信开发者可以制作出更加精美的 3D 游戏,尤其是在小游戏和 Web 平台上创造出令人惊艳的效果。

  • 拥抱 ES6 和 TypeScript ,完善的代码提示和自动导入
  • 支持 WebGL1.0 和 2.0 多渲染后端
  • 面向未来的高性能渲染层 API 设计
  • 基于物理的光源、Camera 、材质
  • 强大的粒子特效
  • 灵活简洁的 UI 系统
  • 简单易用的物理系统
  • 纯 GPU 驱动的骨骼动画系统
  • 便捷的 tween 动作系统
  • 支持 Camera 渲染到 RenderTexture ,便于实现各种后效
  • 便捷的地形系统,快速绘制地形纹理

Cocos Creator 3D 适用对象

Cocos Creator 3D 适合中小规模 3D 游戏团队以及资源有限的独立游戏开发团队。Cocos Creator 3D 的下载和使用完全免费,官网已充实了大量详细的技术文档,此外,Cocos 活跃的开发者社区、强大的技术顾问团队,能够为开发者及时有效地答疑解惑,帮助开发者攻克 3D 游戏开发过程中的技术难题,提高游戏开发效率。