全员戴口罩 4 周开发,3D v1.0.4 到底有多稳?

2020.3.9 产品动态 by Cocos

作为一款跨平台的游戏引擎,今年 Cocos Creator 3D 的目标是服务于跨端 3D 游戏的开发需求,我们尤其关注移动原生平台的质量。上周五 Panda 也为我们带来了 Cocos Creator 3D 的 Roadmap,包括近期要发布的 v1.0.4 和 v1.1 以及更长远的规划,欢迎大家戳这里阅读!

今日如约先为大家带来 Cocos Creator 3D v1.0.4 这个更稳定的版本。

首先要感谢开发者们在新冠疫情中依然不停地给我们反馈意见和问题,让我们意识到哪些问题对大家的阻碍更大。这个版本修复了暴露出来的重要问题,相信会提供给广大开发者更强大的性能、更丰富的新特性和更好的编辑器体验。

重点更新  

微信 PC 端小游戏支持

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

缓动系统优化

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 类型,我们会自动监听销毁事件并主动停止和销毁缓动对象,开发者不需要做任何额外的操作。

完善物理胶囊碰撞体支持

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

重要 Bug 修复

1. 之前论坛有不少反馈说 Mac 上使用 FBX 资源遇到导入错误,提示 fbx2gltf 库不兼容,这个问题我们通过在低版本 Mac 上编译 fbx2gltf 工具解决了问题,目前已支持 Mac OS X 10.12+。

2. 有不少开发者遇到编辑器升级到 1.0.3 后编辑器面板上各种小图标不见了的问题,这个问题是因为编辑器所在目录包含空格引起的,我们已经修复了。

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 计算问题

文档

  • 新增轴向与模型导出指引文档https://docs.cocos.com/creator3d/manual/zh/asset/dcc-export-mesh.html
  • 更新缓动系统使用文档https://docs.cocos.com/creator3d/manual/zh/tween/
  • 更新发布文档中关于分包的说明https://docs.cocos.com/creator3d/manual/zh/editor/publish/
  • 更新原生平台发布文档https://docs.cocos.com/creator3d/manual/zh/editor/publish/publish-native.html
  • 更新材质系统文档https://docs.cocos.com/creator3d/manual/zh/material-system/overview.html
  • 更新原生 JSB 调试文档https://docs.cocos.com/creator3d/manual/zh/editor/publish/debug-jsb.html

以上为本次更新的详细内容,Cocos Creator 3D v1.0.4 也将是 Cocos Creator 3D 在 v1.0.x 阶段的最后一个版本。

接下来的 Cocos Creator 3D v1.1 将会是注入很多重要新特性的里程碑版本,在原生框架上我们还会持续投入大量研发资源,后续将逐步输出具体计划,敬请期待。

衷心感谢所有与我们耐心沟通,提交反馈,与我们共同成长的伙伴们,我们会一如既往地优化产品的性能与使用体验。也欢迎小伙伴们继续通过论坛、GitHub、Cocos 企业服务等渠道向我们提交使用反馈哦~