hero-image
2020.09.29

V1.2.0版本

发布时间: 2020.09.29

Creator 3D v1.2 版本是 2D 和 3D 引擎融合前最后也是最重要的一次大版本更新,Cocos Creator 3D 这条支线也将停止在 v1.2.x 版本上。在 2020 最后的几个月内,我们将尽全力带给大家 2D 和 3D 融合后的 Cocos Creator v3.0 版本。在保障 3D 引擎平滑升级和原生性能大幅度提升的前提下,还会延续 Creator v2.x 在 2D 游戏领域的既有优势。届时 Creator 引擎将涅槃重生,开启我们最为重要的新旅程:将 Cocos Creator 打造为世界级游戏引擎。

重大功能更新

编辑器插件系统

Cocos Creator 3D 的编辑器在 Creator 2.x 的基础上做了大幅度的升级,其中最重要的升级就是编辑器框架重构为更彻底的微内核模式,几乎所有功能模块都是以插件形式存在于编辑器中。所以 3D 引擎从诞生之初就是天然支持插件扩展的,只是由于各个模块消息和插件机制的整理进度,所以之前版本中一直都没有开放插件体系给开发者。在最新的 v1.2 版本中,我们完成了基础的插件机制文档和各个模块的插件接口、消息等,所以终于可以开放给开发者们,满足大家定制工作流的需求。

新建一个插件非常简单,只需要在扩展菜单中创建即可。扩展管理器中则可以管理所有扩展插件,你可以将扩展插件设置为全局或者是仅当前项目生效。

对插件开发感兴趣的开发者可以关注下面两个文档链接:

在 v3.0 版本中,我们的插件商店也将迎来升级,同时包含 2.x 和 3.x 版本的插件,也会投注更大的努力在插件生态体系上,帮助开发者通过插件获得收入。

光影增强

在之前的 Creator 3D 版本中,我们对光影的支持还不够完善,仅能够支撑一些较简单的项目需求,具体限制是有两点:

  1. 同一视角下,动态光源只允许两盏
  2. 阴影只支持 Planar Shadow 平面投影

而在 v1.2 中,引擎对光源和阴影都做了重构和升级,目前已完成

  1. 基于多 Pass 的多光源支持,不过主方向光仍然只支持一盏
  2. 基于 Shadow Map 的方向光动态阴影,使用方式和之前的 Planar Shadow 平面阴影保持一致
  3. Shadow Map 支持 pcf 软阴影
  4. 光源和阴影的渲染都支持 GPU Instancing 合批

Shadow Map 阴影功能和之前版本中的 Planar Shadow 功能合并在场景的全局阴影选项中,开发者可以自由选择使用何种阴影,Planar Shadow 性能更好但只支持平面,Shadow Map 支持向所有物体上投射阴影。在 v1.2 的未来小版本还会对聚光灯支持 Shadow Map 动态阴影,也会加强阴影计算的范围自适应等功能。

编辑器内游戏预览

v1.2 新增了 Game View 预览视图,支持在编辑器内直接运行游戏。开发者在顶部主工具栏的预览按钮左侧可以找到一个新的预览模式选择下拉框,可以选择使用浏览器或 Game View 进行预览。在 Game View 预览的状态下,场景编辑器、属性面板下的所有操作都会被实时更新到 Game View 窗口中。

也可以使用暂停按钮进行实时调试,使用步进按钮逐帧执行。

物理模块增强

与动画模块一样,物理模块的功能也在不断的增强之中,v1.2 之中我们基本补全了游戏中需要的刚体碰撞体,并且开始添加各种约束组件的支持,对物理类游戏的支持得到了极大地增强。下面是具体的新功能:

  • 物理碰撞组独立使用 PhysicsSystem.PhysicsGroup 类型,不再与 Node.Layers 共享分组配置
  • 项目配置中添加物理碰撞组设置面板
  • 添加单形、圆锥、平面、地形等碰撞体
  • 添加点到点、铰链约束组件
  • 网格碰撞器添加凸包近似功能
  • 碰撞体添加获取包围盒和包围球的接口
  • 优化物理事件
  • 重构碰撞点数据

以下为控制人物在地形上行走的演示:

构建系统优化

构建系统的优化项主要是以下几点:

  • 开放自定义构建插件,可以参考插件系统中的构建插件文档
  • 引擎支持构建成文件分离的多模块结果,这将带来以下多个好处:引擎多模块并发加载、动态加载模块、微信引擎插件支持选择不同物理引擎后端
  • 构建结果的 settings.js 改为 settings.json,并放置在 res 下,允许作为资源上传服务器
  • 构建任务原来的查看构建配置已经换为修改构建配置,直接修改就会保存记录
  • 构建平台选择上拆分了原有的 Native 平台,方便定制构建流程,输出结果与之前一致

动画编辑器体验优化

动画编辑器是我们一直在持续优化的重要模块,本次 v1.2 又完成了新一轮体验上的优化,具体优化如:

  • 支持节点树面板中节点的搜索与显示过滤
  • 支持复制粘贴节点上的所有动画数据
  • 动画编辑器的复制粘贴改为使用系统剪贴板,支持跨编辑器的复制粘贴动画数据(节点、轨道以及关键帧)
  • 支持多选节点后批量添加属性轨道
  • 关键帧选取和取消选取操作优化(Ctrl + 鼠标点击选中关键帧可取消选中)
  • 动画编辑器支持多选关键帧后继续点击编辑曲线或者选中未选中关键帧

在这些优化基础上,动画编辑工作的效率将得到更大的提升,比如多选节点后,批量添加关键帧,在 Inspector 中批量编辑关键帧动画数据,可以轻松同步属性的修改到不同节点上;再比如从某个编辑好的节点上复制粘贴完整动画数据到另一个节点上。

具体动画编辑器的所有使用细节可以参考使用文档

脚本系统优化

在脚本系统方面,v1.2 完成了引擎分模块导出,这样做的好处主要有两个:第一,提高加载引擎过程中的并发数量,优化加载时间;第二,支持子模块的动态导入,以物理模块为例,目前已支持 wasm 和 asm.js 版本的动态选择,在支持 WebAssembly 的环境中直接加载 wasm 格式的 ammo 库(bullet),其他环境下自动加载兼容性更好的 asm.js 格式 ammo 库(bullet)。

除此之外,我们也优化了编辑器中脚本编译的性能,尤其是对存在大量脚本的项目,可以大幅度提高脚本更改时的效率。同时,预览项目也会应用项目设置中的引擎模块选择,加强了预览和构建体验的统一性。

支持 ASTC 压缩纹理

v1.2 新增 ASTC 压缩纹理支持,相比于 ETC 和 PVR 等传统压缩纹理格式,ASTC 是功能和性能都更优秀的下一代移动端压缩纹理统一标准。在 v1.2 中,我们还优化了压缩纹理的配置方式,在项目配置中开发者可以建立压缩纹理的预设配置,贴图的配置中只需要选择预设即可,大大节省了之前需要逐贴图配置的时间。

此外,在不支持 ASTC 和 ETC2 这类先进压缩纹理的环境下,我们也专门为 2D 和 UI 的半透明贴图支持了透明通道分离的压缩纹理格式。参考压缩纹理使用文档

全局雾效

这是一个本来计划在 v1.1.1 中添加的功能,但引擎组出于对稳定性的负责任态度,我们决定未来不在第三位小版本中添加功能,所以被延期到 v1.2 中。目前的雾效功能是采用顶点着色器来计算混合因子并用于片元着色器中的颜色混合,除了支持常规的 Linear、Exponential、Exponential Square 雾化处理算子以外,还支持了 Layered 处理算子。使用上只需要在场景节点上,进行全局雾效的配置即可。

具体使用请参考全局雾使用文档

合并部分 Creator 主版本功能

我们已经开始合并部分 Creator v2.x 主版本的功能,为 v3.0 做准备,下面是 v1.2 阶段已经完成的功能合并:

  • 统一组件命名风格,请参考 API 变动章节
  • ScrollView 和 PageView 组件的修复和功能
  • Toggle 和 ToggleContainer 组件的修复和功能
  • RichText 组件的修复和功能
  • EditBox 组件的修复和优化
  • Graphics 组件优化
  • Tween 模块功能和行为同步

可视化 Macro 配置

很多开发者可能用过引擎中的内置宏配置:cc.macro,之前的使用仍然有诸多不便,比如有一部分需要在引擎启动前设置才能够生效;引擎的启动流程修改也偶尔会改变设置时机和行为。为了解决设置宏配置的麻烦,我们在编辑器的项目配置中直接支持了可视化配置,参考项目设置文档的引擎宏配置章节

模型资源预览

编辑器中选中模型后可以对模型资源进行全方位预览,也可以查看默认材质中使用的各种贴图。

在未来的版本中我们还会支持骨骼动画的预览方便做裁切。

渲染层重构

从今年年初开始,我们已经加大了对原生渲染器的研发投入,即将在 v3.0 中推出高性能的多后端渲染器。不仅兼容 Vulkan、Metal 等现代渲染后端,在渲染管线层面也尽可能为了发挥现代渲染后端的性能做了大量重构,这些重构也在 v1.2 中落地了一部分,比如多层 Descriptor Set 抽象取代 BindingLayout;支持 Dynamic uniform buffer 机制;Pipeline State Object 的底层复用;资源化渲染管线。这些重构让渲染层更加健壮,也为高性能的原生渲染器做好了准备,敬请期待今年底即将发布的 v3.0。

暴露地形和 2D 组件材质选项

从 v1.2 开始,我们开放了地形组件和 2D 渲染组件的材质属性,所以大家可以自己制作材质并替换。对于地形,只需要在 Terrain 组件上设置 effect 资源。而对于 Sprite 等 2D 渲染组件,也只需要在组件属性面板上设置默认的 Material 资源。


API 变动和 Breaking changes

1. 组件类名大规模重构

为了符合 Cocos Creator v2.x 的 API 规范,我们将 3D 中组件类名包含 Component 后缀这样的命名方式舍弃了,并做了数据的自动升级和代码的兼容,请放心升级。不过建议开发者还是要在代码中搜索所有类似命名方式的使用,并尽快更改为无 Component 后缀的类名。可以使用下面正则表达式进行全局搜索(打开大小写敏感和正则匹配)

([A-Z]\w+)Component

比对照下面的表格进行重命名:

< v1.2v1.2
ModelComponentMeshRenderer
SkinningModelComponentSkinnedMeshRenderer
BatchedSkinningModelComponentSkinnedMeshBatchRenderer
CameraComponentCamera
AudioSourceComponentAudioSource
DirectionalLightComponentDirectionalLight
SphereLightComponentSphereLight
SpotLightComponentSpotLight
LightComponentLight
AnimationComponentAnimation
SkeletalAnimationComponentSkeletalAnimation
ParticleSystemComponentParticleSystem
BillboardComponentBillboard
LineComponentLine
RigidBodyComponentRigidBody
BoxColliderComponentBoxCollider
SphereColliderComponentSphereCollider
CapsuleColliderComponentCapsuleCollider
CylinderColliderComponentCylinderCollider
ConeColliderComponentConeCollider
PlaneColliderComponentPlaneCollider
TerrainColliderComponentTerrainCollider
MeshColliderComponentMeshCollider
UITransformComponentUITransform
UIModelComponentUIMeshRenderer
CanvasComponentCanvas
SpriteComponentSprite
LabelComponentLabel
GraphicsComponentGraphics
WidgetComponentWidget
ButtonComponentButton
MaskComponentMask
ScrollViewComponentScrollView
ScrollBarComponentScrollBar
PageViewComponentPageView
PageViewIndicatorComponentPageViewIndicator
SliderComponentSlider
ToggleContainerComponentToggleContainer
ToggleComponentToggle
RichTextComponentRichText
LayoutComponentLayout
UIStaticBatchComponentUIStaticBatch
UIOpacityComponentUIOpacity
LabelOutlineComponentLabelOutline
ProgressBarComponentProgressBar
EditBoxComponentEditBox
BlockInputEventsComponentBlockInputEvents
UICoordinateTrackerComponentUICoordinateTracker
SafeAreaComponentSafeArea
ViewGroupComponentViewGroup
RenderComponentUIRenderable

与此同时,原本在根命名空间下的一些内部类被迁移到子命名空间下:

< v1.2v1.2
Modelscene.Model
SubModelscene.SubModel
DirectionalLightscene.DirectionalLight
SphereLightscene.SphereLight
SpotLightscene.SpotLight
Lightscene.Light
Camerascene.Camera
SkinningModelmodels.SkinningModel
BakedSkinningModelmodels.BakedSkinningModel
MorphModelmodels.MorphModel

2. 废弃节点上 UI 相关接口

被废弃的接口如下:

  • 属性:width、height、anchorX、anchorY
  • 方法:getAnchorPoint、setAnchorPoint、getContentSize、setContentSize

请先获取节点上的 UITransform 组件,再使用对应的接口,比如

node.getComponent(UITransform).setContentSize(size);

3. 标准材质小修改

标准材质中删除 PBR 贴图自定义通道的功能,只接受 glTF 标准定义的通道排布,即 RGB 分别对应 occlusion、roughness、metallic。如有使用其他排布组合请升级贴图资源。


部分重要更新

由于 v1.2 开发周期较长,包含了数百个大小不同的修改记录,所以在此仅简要列出部分较重要的修改列表供参考。

编辑器更新

  • 增加小秘书入口
  • 新增模型线框功能,在场景窗口右上角有一个工具按钮,点击后可以开启线框显示
  • 立方体贴图现在将支持从一张包含了 6 面的图像中导入(按特定顺序排列)
  • 插件化 preferences,支持插件内定义数据,自动渲染到 preferences 面板
  • 新增设备管理器,可以自定义预览设备的分辨率(在 preferences 里)
  • 插件化 project,支持插件内定义数据,自动渲染到 project 面板
  • 新增 Message List,显示插件对外开放的消息列表,点击“开发者”菜单项的“消息列表”即可打开
  • 新增 Shortcuts 功能,允许自定义快捷键,点击“Cocos Creator”主菜单项的“快捷键”即可打开
  • Inspector 增加离开时自动保存配置,离开正在编辑的资源的时候自动保存(不配置的时候会弹窗)
  • 脚本导入之前按字典序排序,不再是随机顺序
  • 当构建到原生类平台时,将匹配目标 JavaScript 运行环境来编译脚本,比如 ES6
  • 内置 Mesh Optimizer 工具到模型资源界面
  • 支持导入包含空 Mesh 的模型
  • 减少烘焙库运行的内存占用
  • 内置 primitives 模型支持烘焙 Light map 接受烘焙阴影

引擎更新

  • 渲染管线资源化重构,优化序列化数据结构
  • 在 instantiate 和 addComponent 失败的时候不再返回 null,而是直接报错给用户处理
  • 修复多点触摸时不会派发所有触摸点的问题
  • 增加 sys.getSafeAreaRect 方法,用来获取手机屏幕的安全显示区域
  • 补充 Morph target 在快游戏等平台上的实现(除支付宝小游戏)
  • 优化 Light map 接缝处的漏光现象
  • Light map 支持 instancing 合批

注意事项

Xcode 12 更新后,我们临时发现工程上有一些小问题,在 iOS 模拟器上运行会报错,主要是因为架构选择中没有包含 X86 架构,大家可以在 Xcode iOS 工程配置中删除 VALID_ARCHS(在 Xcode 12 中已被弃用)。

2020.08.11

V1.1.2版本

发布时间: 2020.08.11

v1.1.2 版本是 v1.1.x 规划内最后一个稳定版本,我们在 v1.1.1 的基础上做了一系列优化和修复,进一步提升 3D 引擎的稳定性。除此之外,最重要的更新是带来了字节跳动小游戏平台的支持,字节跳动小游戏平台已成为国内众多小游戏渠道中极具吸引力的头部渠道。在我们的论坛中就有很多开发者已经翘首期盼多时,不断在询问我们对字节跳动小游戏的支持情况,我们也很高兴在和字节跳动官方合作对接后,将这个平台的正式支持带给开发者们。

重要更新说明

支持字节跳动平台

继 Cocos Creator v2.4.2 之后,Cocos Creator 3D 也完成了对字节跳动小游戏平台的支持。字节小游戏基于字节跳动全产品矩阵开发,包含 今日头条、抖音及今日头条极速版,无需下载,点开即玩,与图文、短视频等内容有着天然的增强和协同作用。字节跳动全产品矩阵以内容分发为核心,通过内容带动小游戏分发,由内容为小游戏带量以及裂变。目前已有十分丰富的应用场景,在自然搜索、feed 流、个人主页、小视频、视频评论区等地方均有流量入口,详细说明可参考《了解小游戏:流量入口概述》。在收入方面,字节小游戏目前已支持广告及内购两种变现方式。

游戏项目升级到 v1.1.2 之后,即可通过构建时选择字节跳动小游戏发布平台来完成发布,详细内容请参考发布到字节小游戏文档

为了更好地服务字节开发者,我们还在论坛开辟了字节小游戏专区,请所有开发者统一到此专区或者 Cocos 小秘书中进行技术咨询和反馈。这样我们才可以汇总、整理常见问题,提升服务体验。此外,Cocos 也会跟字节跳动继续深入合作,为开发者输送更丰富的字节小游戏平台能力,传递字节小游戏平台的全新政策,帮助开发者在字节小游戏平台上收获成功。

后续版本预告

在 v1.1 发布之后,我们除了持续对稳定性进行优化之外,引擎组的主力力量都集中在下一个重要的功能版本 v1.2 之上。令人兴奋的 v1.2 近期就会在论坛开启公测,在这里预告一些 v1.2 将要带来的重要特性,希望到时候大家可以关注论坛帮助我们尽快将这个版本稳定下来。

  • 多 Pass 动态光源:解除之前只能有三个动态光源的限制,不过前向渲染中光源对于性能影响仍然很大,请谨慎使用
  • 方向光支持 ShadowMap 实时阴影
  • 渲染器资源化重构:为可编程渲染管线带来更友好的接口和资源化配置能力
  • 物理功能强化:增加地形碰撞器;点、线、三角面、圆锥体等基础碰撞器;物理碰撞组配置面板;部分约束支持
  • 场景编辑器重构和体验优化
  • 支持模型线框显示
  • 场景雾效
  • 编辑器插件机制公开:包含插件机制文档和各个编辑器模块的扩展文档
  • 还有更多未公开的功能

是不是已经迫不及待想要用上了!我们相信 v1.2 版本将大幅度提升 Cocos Creator 3D 的游戏开发能力,赋予开发者更大的想象空间!

在 v1.2 版本之后,我们将暂时停止 3D 编辑器的功能开发,整个 Cocos 引擎团队都将投入到 Creator 主版本和 3D 版本的合并工作中去,争取在今年内为大家带来完全统一的 Cocos Creator v3.0,提供大一统的 2D 和 3D 游戏开发体验。届时 Cocos Creator 3D 的游戏将可以直接升级到 v3.0,我们也会为 Cocos Creator 2.x 用户提供完善的升级工具支持,同时 Cocos Creator 2.x 也会在一段较长的时间内持续维护,以支持那些不需要升级的成熟项目。

详细更新说明

已知问题

在微信小游戏平台上,目前发现当使用微信引擎插件时,即便构建模块中选择 ammo 物理后端,运行时仍然使用的是 cannon 后端,这是因为微信在校验时没有识别出本地引擎和远程引擎插件的差异导致的误判。如果一定要使用 ammo 物理引擎,请关闭微信引擎插件即可。我们正在联系微信团队解决此问题。

编辑器

  • [FEATURE] 支持构建字节跳动小游戏平台
  • [IMPROVE] 取消脚本随机导入顺序的设定(让脚本循环引用报错更稳定)
  • [IMPROVE] 地形去除 Tile Size 对笔刷的影响,优化保存逻辑
  • [IMPROVE] 对地形最高高度进行限制避免溢出
  • [IMPROVE] Lightmap 烘焙时消除金属度影响
  • [IMPROVE] 移除 game.ejs 的多余代码
  • [FIX] 修复自动图集在 resources 动态资源目录下的处理(外部可以单独引用小图贴图)
  • [FIX] 修复 Prefab 还原时根节点坐标等 Transform 数据会被还原的问题
  • [FIX] 修复 Inspector 中多次点击 prefab 重置导致节点被取消关联的问题
  • [FIX] 修复切换 Prefab 时编辑器 header 头信息刷新问题
  • [FIX] 修复场景里偶现的将编辑器默认 Camera 显示为 Gizmo 的问题
  • [FIX] 修复引擎模块数据的启动更新
  • [FIX] 修复勾选粒子数据剪裁选项后导致的构建问题
  • [FIX] 修复 clickEvent 循环刷新问题

引擎

  • [CHANGES] 移除小游戏平台上的 sys.browserType 信息,推荐使用 sys.platform
  • [IMPROVE] 支持模型和地形在开启 Lightmap 情况下进行 instancing 合批
  • [FIX] 修复 iOS 10 WebGL 环境下的渲染问题
  • [FIX] 修复插屏没有重置部分 GL 状态的问题
  • [FIX] 修改 Eventify 中 ES7 API 的使用,兼容 ES5
  • [FIX] 修复静止动画(不包含动态帧)导致的 AnimationState.sample 错误
  • [FIX] 修复节点禁用状态下的 Transform 修改没有被应用的问题
  • [FIX] 修复 Web 平台的引擎重启逻辑
  • [FIX] 修复材质 hash 的计算
  • [FIX] 修复粒子拖尾模块可能导致的一个 gl 报错
  • [FIX] 修复骨骼动画 Shader 中浮点数解码问题
  • [FIX] 修复原生平台图片下载错误没有捕获的问题
  • [FIX] 修复 vivo 小游戏平台下的环境判断和启动问题
  • [FIX] 修复 vivo 平台陀螺仪事件响应问题
  • [FIX] 修复小游戏平台(Huawei、OPPO、vivo、Cocos Play)的前后台事件响应问题
  • [FIX] 修复支付宝调试工具中的插屏显示问题
2020.07.02

V1.1.1版本

发布时间: 2020.07.02

重要更新说明

1. 启用 macro.CLEANUP_IMAGE_CACHE,开启时会在贴图上传 GPU 后对 ImageAsset 主动进行释放,降低内存开销,默认开启。

2. 预览和编辑器中默认开启抗锯齿(macro.ENABLE_WEBGL_ANTIALIAS)。

3. 烘焙功能支持烘焙模型的 light map,启用条件是模型的 mesh 数据包含两套 uv(第二套 uv 用来访问 light map),同时材质也需要勾选 lightmap 选项。烘焙功能的使用文档也已更新。

本图中左边有烘培效果,右边没有

4. 预览小窗完善:新增分辨率选择与缩放,支持宽高比设置功能。

5. Planar shadow 支持 instancing(与模型本身的 instancing 状态同步),但对骨骼动画贴图布局有更严格的要求

6. 预烘焙骨骼动画鲁棒性提升,如果一个模型只会在预烘焙模式下播放动画,运行时彻底删除骨骼节点树也能正常显示了(对节点自身不包含动画的情况有近似处理),可以作为极限优化包体的手段。

7. 重构优化 EventTarget 实现,提供新的 Eventify 接口可以用来实现继承基类的同时为子类添加 EventTarget 能力。

class UserComponent extends Eventify(Component) { }

同时我们也简化了 EventTarget 的实现,去除了节点和组件对于自己注册的所有目标的引用,避免循环引用。同时在派发事件是确保监听者对象的有效性来避免出现事件回调中已经被销毁的对象产生的问题。

8. [Breaking] 为保持命名规范统一,Quat.lerp 改为普通线性插值,增加 Quat.slerp

9. 部分低端设备上不支持 Vertex Texture 或支持数量过少,无法开启 GPU 粒子,并且导致 v1.1 编辑器渲染错乱不可用。论坛发现不少类似的反馈,用户只能回滚到 v1.0.4,目前该问题已修复,开发者们可以放心升级了。

Editor

  • [FEATURE]烘焙功能支持烘焙模型的 light map
  • [FEATURE]支持快捷设置预览场景
  • [FEATURE]预览插件新增分辨率选择与缩放
  • [FEATURE]预览插件与预览小窗宽高比设置功能
  • [FEATURE]场景摄像机配置窗口增加滚轮速度设置
  • [FEATURE]支持修改 light map 弹出框默认路径
  • [FEATURE]粒子预览小窗口支持多选粒子
  • [FEATURE]支持拖动 SpriteFrame 资源到节点树或场景中直接生成 Sprite 节点
  • [FEATURE]插件偏好设置升级机制
  • [FEATURE]支持偏好设置自定义的预览浏览器
  • [IMPROVE]更新构建流程实现和流程控制细节
  • [IMPROVE]优化 Widget 的编辑界面
  • [IMPROVE]增加 Widget 值锁定功能
  • [IMPROVE]优化 TGA 贴图支持
  • [IMPROVE]对编辑器和预览环境默认开启抗锯齿
  • [IMPROVE]模型导入支持 quantized joints/weights
  • [IMPROVE]使用随机端口启动烘焙,避免任务冲突
  • [IMPROVE]新增场景面板支持复制粘贴删除等快捷键,优化交互效果
  • [IMPROVE]同步 3d 和 2d 模式下网格颜色的设置
  • [IMPROVE]新开和刷新场景过程中保持选中节点状态
  • [IMPROVE]屏蔽构建面板中 native 平台的 Upside down 屏幕方向
  • [IMPROVE]优化地形编辑体验和保存逻辑
  • [IMPROVE]对空项目数据迁移增加更多容错
  • [IMPROVE]新建的场景保存时弹窗选择保存路径
  • [IMPROVE]增加项目配置中的 Layers 说明
  • [IMPROVE]编辑器环境下对 Game 派发的事件回调进行 try catch 保护避免回调代码错误阻断编辑器启动流程
  • [IMPROVE]材质属性面板中将合批选项提前到 Passes 外部
  • [IMPROVE]优化资源搜索窗口和折叠显示效果
  • [IMPROVE]增加 prefab 数据还原中的容错
  • [IMPROVE]整理并优化资源和层级面板的右击菜单显示和事件
  • [IMPROVE]层级,资源面板添加对顶层菜单:全选的支持
  • [IMPROVE]层级面板中复制节点的时候不再给节点名附加 copy 后缀
  • [IMPROVE]层级管理器 scene 节点右击菜单上增加“定位到资源”,以便找到场景资源
  • [IMPROVE]优化减少长按 ctrl+v 带来的粘贴频率
  • [IMPROVE]动画面板添加对顶层菜单:复制,粘贴,全选的支持
  • [IMPROVE]动画编辑器支持移动关键帧的时候,可见区域跟随移动
  • [IMPROVE]动画编辑中在播放动画时才开启引擎主循环
  • [IMPROVE]进入动画编辑器不触发场景修改标记
  • [IMPROVE]动画编辑器编辑事件或曲线的时候,屏蔽部分快捷键
  • [IMPROVE]TextureCube 贴图面板操作体验优化
  • [IMPROVE]添加命令行构建进程退出代码
  • [IMPROVE]添加依赖资源丢失后构建的报错提示
  • [IMPROVE]新建脚本资源时生成的类名改为大驼峰格式
  • [IMPROVE]对默认地形贴图使用 mipmap 以减少噪点
  • [IMPROVE]优化一些 Gizmo 显示效果
  • [IMPROVE]优化双击 Camera 节点后的聚焦距离
  • [IMPROVE]迁移 EditorCamera 组件到编辑器内部
  • [IMPROVE]完善 ESLint 规则,修复代码问题
  • [IMPROVE]给 Toolbar 上的按钮增加提示 tip
  • [IMPROVE]在“开发者”菜单内增加“帮助文档”
  • [IMPROVE]增加部分组件的帮助文档
  • [IMPROVE]禁止资源内置的 material 修改
  • [FIX]修复 AssetDB 的一些已知问题
  • [FIX]修复 glTF 模型的插槽检测问题
  • [FIX]修复没有 morph 的模型导入后 Mesh.struct.morph 字段却不为空的问题
  • [FIX]修复构建压缩纹理的相关处理(感谢天美反馈)
  • [FIX]修复批量复制节点时的刷新和数量错误
  • [FIX]修复模型 prefab 节点重新关联 prefab 失效的问题
  • [FIX]修复模型节点从 prefab 资源还原导致的数据丢失问题
  • [FIX]修复模型使用外挂贴图的时候,inspector 显示资源丢失的问题
  • [FIX]修复搜索列表中双击资源和重新定位资源的问题
  • [FIX]修复资源缩略图在资源重新导入的时候不更新的问题
  • [FIX]修复 FBX 资源扩展名大写并且开启 dumpMaterial 的旧项目会丢失资源的问题
  • [FIX]修复 mtl 资源导入可能卡住的问题
  • [FIX]修复 mtl 迁移错误以及嵌套子资源错误的问题
  • [FIX]修复材质中部分 effect 资源没有 instancing 的报错问题
  • [FIX]修复 effect 错误的情况下,场景启动可能错误的问题
  • [FIX]修复资源管理器的 effect 资源覆盖时出现报错
  • [FIX]修复拖拽组件脚本资源到节点上的 bug
  • [FIX]无名称节点拖为 prefab 时自动设置默认名称
  • [FIX]修复删除当前场景资源后,无法保存当前场景的问题
  • [FIX]修复中文 ttf 字体无法导入的问题
  • [FIX]修复编辑器构建功能不支持自定义原生引擎的问题
  • [FIX]增加构建面板导入旧版本配置时候的容错处理
  • [FIX]修复自定义原生引擎部分文件拷贝错误
  • [FIX]修复桌面浏览器预览时界面旋转按钮不生效的问题
  • [FIX]调整动画编辑器数据更新逻辑
  • [FIX]修复退出动画编辑模式时没有关闭曲线、事件编辑器的问题
  • [FIX]修复动画编辑器鼠标上移状态下复制关键帧无效问题
  • [FIX]修复动画编辑器切换 clip 后数据可能不更新的问题
  • [FIX]修复动画编辑器播放状态的 Bug
  • [FIX]修复动画编辑器的选中、编辑状态管理
  • [FIX]修复动画编辑器长按移动关键帧、事件帧功能
  • [FIX]修复动画编辑器自动偏移画布计算错误,以及使用快捷键移动关键帧的偏移问题
  • [FIX]修复动画编辑器框选关键帧以及对应操作优化
  • [FIX]修复动画编辑器 alt 快捷键复制多个关键帧位置偏差与属性列表底色显示问题
  • [FIX]修复节点上动画 clip 数据变动时动画编辑器的同步更新问题
  • [FIX]动画编辑器中为丢失节点添加展开容错以及属性轨道容错
  • [FIX]修复动画插值曲线可能不起效的问题
  • [FIX]修复事件编辑自动保存,事件编辑时屏蔽关键帧移动
  • [FIX]修复第二次将动画编辑器面板放入编辑器内后无法显示线条的问题
  • [FIX]修复动画编辑器当前关键帧数显示
  • [FIX]修复动画编辑模式下修改脚本后的 undo reset 报错
  • [FIX]修复在动画编辑模式下场景刷新后无法正常使用的问题
  • [FIX]修复动画编辑器中同时选中多个节点上的关键帧并间隔排列,只对当前选中节点生效的问题
  • [FIX]修复动画编辑中从选中节点状态切换到未选中状态,属性关键帧数据残留的问题
  • [FIX]修复动画编辑器一些特殊操作导致的时间轴偏移问题
  • [FIX]修复动画编辑器内直接修改属性值的时候,场景节点没有及时更新的问题
  • [FIX]修复动画编辑器关键帧无效的问题以及复制数据被删除后不允许粘贴操作
  • [FIX]修复曲线数据序列化问题
  • [FIX]修复添加 ui 节点生成了 canvas 但没有挂载实际组件的问题
  • [FIX]修复绘制凹下地形后 undo 重新绘制的是隆起地形问题
  • [FIX]修复地形图块不是 1x1 的情况下复制时报错问题
  • [FIX]修复关闭场景时保存地形资源没有等待的问题
  • [FIX]修复清空光照贴图未能立即清空烘焙输出的文件夹
  • [FIX]修复相机小窗曝光参数不同步的问题
  • [FIX]修复 Joint Texture 配置界面没有选中 texture 的时候点击新建 Joint 报错
  • [FIX]修复 Joint Texture 配置界面无法滚动的问题
  • [FIX]修复编辑器顶部预览按钮区域设置的初始场景无效的问题
  • [FIX]修复地形资源保存可能出现的问题
  • [FIX]修复在 Terrain 组件属性面板内新建地形资源,操作窗口不会出现的问题
  • [FIX]修复 Light map 序列化失败的问题
  • [FIX]修复 Light map 生成后无法被设置到地形或模型上的问题
  • [FIX]地形节点在 light map 烘焙后加入 undo 记录
  • [FIX]修复面板拖拽抖动的问题
  • [FIX]面板刷新时增加容错机制,避免 loading 状态不消失
  • [FIX]修复网格缩放的问题
  • [FIX]修复默认场景的光源朝向
  • [FIX]修复偏好设置中 console 字体大小设置导致报错的问题
  • [FIX]修复小部分多语言细节
  • [FIX]修正 mac 上右键菜单偏移的问题
  • [FIX]修复部分组件的参考文档链接失效问题
  • [FIX]修复烘培后接着移动,撤销会将烘培结果一起撤销的问题
  • [FIX]修复场景相机在某些特殊情况下会旋转的问题
  • [FIX]修复九宫格编辑器能够停靠到窗口的问题
  • [FIX]修复选中子节点的时候撤销父节点坐标修改,选中框没有更新的问题
  • [FIX]修复重置布局后动画编辑器显示正在等待加载的问题
  • [FIX]修复在 resources 文件夹内使用自动合图,动态加载的时候会报错的问题
  • [FIX]修复在编辑器内无法把 ttf 字体赋给 richText 的问题

Engine

  • [FEATURE]Planar shadow 支持 instancing(与模型本身的 instancing 状态同步),但对骨骼动画贴图布局有更严格的要求
  • [FEATURE]新增 SpriteFrame.createWithImage 方法支持用 ImageSource 或 ImageAsset 来快捷创建 SpriteFrame
  • [FEATURE]启用 macro.CLEANUP_IMAGE_CACHE,开启时会在贴图上传 GPU 后对 ImageAsset 主动进行释放,降低内存开销,默认开启
  • [IMPROVE]重构优化 EventTargets 实现
  • [IMPROVE]支持添加多个方向光源(只有一个会生效),删除当前主方向光源时主光源会自动切换到存在的其他方向光源(感谢 Hago 团队反馈)
  • [IMPROVE]预烘焙骨骼动画鲁棒性提升,如果一个模型只会在预烘焙模式下播放动画,运行时彻底删除骨骼节点树也能正常显示了(对节点自身不包含动画的情况有近似处理),可以作为极限优化包体的手段(感谢光子团队反馈)
  • [IMPROVE]骨骼动画支持使用欧拉角作为旋转曲线
  • [IMPROVE]在 Morph target 数量超过 uniform 限制时警告
  • [IMPROVE]优化不包含 Morph target 的 ModelComponent
  • [IMPROVE]简化内置渲染管线的配置和资源依赖
  • [IMPROVE]节点 setRTS 接口支持接受欧拉角 Vec3 对象作为旋转
  • [IMPROVE]保护 Node.invalidateChildren 避免对已销毁的子节点进行操作
  • [IMPROVE]优化粒子系统的运行时创建和内存开销
  • [IMPROVE]物理模块的修复和优化
  • [IMPROVE]优化 Instancing 时不必要的 buffer 内存占用
  • [IMPROVE]优化 Attributes 声明顺序
  • [IMPROVE]补充 ETC2 缺失的 defines
  • [IMPROVE]优化 UI Sprite 材质,使用高精度位置和 UV
  • [IMPROVE]优化 UI 组件的属性排序
  • [IMPROVE]优化部分类中的静态枚举类型引用,让用户编辑代码时可以得到提示
  • [IMPROVE]优化部分英文命名问题
  • [IMPROVE]部分 API 文档的英文翻译
  • [IMPROVE]在 WebGL 后端中,将 D16S8 贴图格式回退到 D24S8
  • [IMPROVE]调整几何模块中 ray_model 的返回值,改为为世界空间坐标
  • [FIX]修复粒子系统在低端设备上(不支持 Vertex Texture 或支持数量过少)无法显示并导致编辑器渲染错乱的问题
  • [FIX]旋转动画使用 Quat.slerp
  • [FIX]修复绑定 Frame buffer 时部分 GPU 状态缓存没有被清理的问题
  • [FIX]修复解除 VB/IB 绑定前没有解除 VAO 绑定可能导致的渲染问题
  • [FIX]修复 Instance buffer 在合并时 stride 可能不一致的问题(增加检查)
  • [FIX]修复 BatchedSkinningModelComponent 的初始化问题
  • [FIX]修复实时计算模式下的骨骼动画插槽
  • [FIX]修复骨骼动画实时计算模式下的 Model 包围盒计算
  • [FIX]修复骨骼动画精度在部分设备上导致开启 instancing 时错乱的问题
  • [FIX]修复编辑器中模型被 restore 时,骨骼动画失效的问题
  • [FIX]修复动画混合的一种边界条件导致的问题
  • [FIX]修复动画在普通 Wrap 模式下没有停止混合逻辑的问题(感谢 @xiayangqun 反馈)
  • [FIX]修复动画事件的监听和触发问题,废弃 AnimationState 的事件相关函数
  • [FIX]修复切分后的动画 Bake 前后的动画帧数对不上(感谢 @k8w 反馈)
  • [FIX]修复设置非常规帧率后 window.requestAnimationFrame 被替换导致该函数在恢复 60fps 时无法使用的问题(感谢疯狂游戏团队的反馈)
  • [FIX]修复节点 setWorldScale 的计算问题
  • [FIX]修复节点 TransformBit.RS dirty 状态下没有同步计算 Scale 的问题
  • [FIX]修复节点和场景互相之间 addChild 或 setParent 被 TypeScript 提示错误的问题
  • [FIX]修复节点监听已销毁的组件导致销毁的时候的崩溃
  • [FIX]修复粒子系统的壳发射模式下计算未归一化的问题
  • [FIX]修复天空盒的 binding layout 更新时机问题
  • [FIX]修复 UITransform 组件中的触点检测逻辑
  • [FIX]修复 UI Mask 的材质没有独立实例的问题
  • [FIX]修复 Graphics 组件 clear 时可能发生的报错
  • [FIX]修复 PageView 的 undo 问题
  • [FIX]修复 subMesh/mesh/model 的射线检测
  • [FIX]修复 model 射线检测结果中的顶点索引(vertexIndex)
  • [FIX]修复部分情况下物理 trigger 节点的同步问题
  • [FIX]修复物理碰撞体在修改 group 或 mask 后没有被重新激活导致假死的问题
  • [FIX]修复 ES6 下 CallbacksInvoker 类构造函数被当做函数使用的一处误用
  • [FIX]修复 Color.set API 参数类型问题
  • [FIX]修复重力感应事件回调中的加速计对象类型声明问题(感谢 @blade 反馈)
  • [FIX]修复微信平台上 gl.compressedTexSubImage2D 不生效的问题(使用 gl.compressedTexImage2D 绕过,感谢天美团队反馈)
  • [FIX]修复微信平台上 Game.EVENT_HIDE 和 Game.EVENT_SHOW 不会触发的问题(感谢 @xiayangqun 反馈)
  • [FIX]修复 Firefox 上可能存在的 WebGL2 buffer 绑定问题
  • [FIX]修复 vivo 平台音频下载问题
  • [FIX]Huawei,OPPO,vivo 平台 Websocket 请求容错(找不到证书)
  • [FIX]修复支付宝平台插屏界面的显示问题
  • [FIX]修复物理 cannon 后端的内存泄露问题
  • [FIX]修复物理 ammo 后端中刚体组件的 fixedRotation 错误的问题
  • [FIX]修复 alipay\cocos play\wechat 等平台的启动画面不一致的问题
  • [FIX]修复 mat4 上 translate 函数的 z 值返回错误的问题
  • [FIX]修复动画在 iOS 上偶尔不播放的问题
  • [FIX]修复设置 node 世界缩放效果错误的问题
  • [FIX]修复骨骼动画不支持 2 根以上骨骼的问题
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 游戏开发过程中的技术难题,提高游戏开发效率。