Cocos Creator 3D v1.0.1 正式发布

2019.11.21 产品动态 by COCOS

感谢所有开发者对 Cocos Creator 3D v1.0.0 的支持,我们兴奋地发现发布不到三周,就有几款 3D 小游戏上线了,多少也算验证了我们在工作流效率上所付出的努力。相信目前的 Cocos  Creator 3D 对于制作纯 3D 小游戏已经不是问题,欢迎更多开发者尝试。

虽然目前上线的这些游戏还比较简单,不过我们相信,更多高质量的作品正在开发中,我们合作的几个项目也进入了到中后期,一经发布一定会告诉大家。

也非常感谢社区中无私奉献各种教程 Demo 的同学:Blake 老师的直播,张晓衡在” Creator 星球开发社区”公众号里面的分享,“一枚小工”和“白玉无冰”在同名公众号分享的教程,等等,真的很感激我们有这样一个优秀的技术社区。

以下是 Cocos Creator 3D v1.0.1 的详细发布说明,欢迎大家升级并反馈问题。

重点功能介绍            

1. 微信插屏配置

正式支持微信插屏配置,只需要构建时选择替换插屏,提交项目信息即可自动替换微信插屏图片,可以选择在插屏下方保留一个不显眼 Powered by Cocos Creator 3D 水印,如果您这么做我们会非常感激。

2. 支持物理材质编辑

目前的功能还比较简单,只支持 Friction 和 Restitution。

3. Effect 资源面板

Effect 的资源面板现已支持预览编译后的 shader 代码,并支持可视化编辑 shader 的每个 define。

4. 优化导入和数据迁移的效率

我们测试的一个超大型项目,数据迁移过程中的内存使用从 4-6 GB 降低到了 0.5-1.2GB,时间从降低到了原本的 10 – 30%。

5. Raycast 支持

v1.0.1 在物理模块 API 中支持对 Collider 进行 Raycast,示例代码如下:

import { systemEvent, SystemEventType, CameraComponent, Touch, EventTouch, geometry, PhysicsSystem, Layers } from "cc";
let ray = new geometry.ray();let maxDistance = 100;let camera: CameraComponent = null; // 找到主 Camera 组件
function onTouchStart (touch: Touch, event: EventTouch) { camera.screenPointToRay(touch._point.x, touch._point.y, ray); // 找到所有结果 if (PhysicsSystem.instance.raycast(ray, Layers.Enum.DEFAULT, maxDistance)) { const r = PhysicsSystem.instance.raycastResults; for (let i = 0; i < r.length; i++) { const item = r[i]; const collider = item.collider; const node = collider.node; // 做需要的处理 } } // 找到最近的匹配结果,两个 API 性能是一样的 if (PhysicsSystem.instance.raycastClosest(ray, Layers.Enum.DEFAULT, maxDistance)) { const result = PhysicsSystem.instance.raycastClosestResult; const collider = result.collider; const node = collider.node; // 做需要的处理 }}
systemEvent.on(SystemEventType.TOUCH_START, onTouchStart);

其他编辑器更新日志           

[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]项目,后续会增加教程

https://github.com/cocos-creator/demo-ball

[Sample] 新增[物理小车 Demo]

https://github.com/cocos-creator/example-3d/tree/master/simple-car-game

[Sample] 新增[下落球球 Demo]

https://github.com/cocos-creator/example-3d/tree/master/falling-ball

[Sample] 新增[滚动小球 Demo]

https://github.com/cocos-creator/example-3d/tree/master/roll-a-ball

[Sample] 新增[吞噬黑洞 Demo]

https://github.com/cocos-creator/example-3d/tree/master/simple-hole

[DOC] 新增 PageView 的使用文档

[DOC] 新增内置 shader 变量的文档

[DOC] 新增 AutoAtlas 资源的使用文档

[DOC] 新增动态合批使用文档

[DOC] 新增压缩纹理使用文档

[DOC] 增加 Canvas clearFlags 属性的说明

[DOC] 优化构建选项说明

[DOC] 优化 Effect 格式文档

[DOC] 完善模型资源的使用介绍(骨骼动画裁剪)

[DOC] 修复一些文档中的错误


以上就是 Cocos Creator 3D v1.0.1更新内容,良好的品质离不开细心的打磨,Cocos 会秉持脚踏实地的精神,稳步提升产品品质。

欢迎小伙伴们继续通过论坛、GitHub、Cocos 企业服务等渠道向我们提交使用反馈!

Cocos Creator 3D 下载:

https://www.cocos.com/creator3d

Cocos 中文社区:

https://forum.cocos.org/c/3D

3D 特别专题  

模块解析 | Cocos Creator 3D 材质系统 

模块解析 | Cocos Creator 3D 物理系统  

案例分享 | 《弹弹乐》3D 完整开发流程

案例分享 | 《快上车》3D 技术实现方案

技术教程 | 从投篮小游戏入门 Creator 3D 开发

技术教程 | Cocos Creator 3D 零基础入门

技术教程 | Cocos Creator 3D 蚂蚁庄园系列

技术教程 | Cocos Creator 3D 素材获取

版本动态 | Cocos Creator 3D 梦想再起航

版本动态 | Cocos Creator 3D v1.0 正式发布