(正式版已发)Cocos Creator v3.3.0 Release Note

What’s NEW

Hightlight

性能优化

在 3.3 版本中,我们继续重点优化了微信小游戏平台的加载性能和运行性能。所有内部项目升级后微信云测启动性能分都可以达到 80 分以上。
同时,我们进一步提升了原生引擎的绑定层级,在渲染管线之上的渲染场景部分也完成了原生化,光源、模型等渲染对象的收集过程使用原生实现,进一步提升了原生平台的性能。


还有一个附带的好处,由于绑定层级的向上迁移,一些底层的数据共享机制被解除了,比如 Pass,SubModel 等。这使得 JS 引擎上层的实现尤其是 UI 和 2D 渲染合批相关的数据更加简化,部分高频操作的数据结构从 TypedArray 还原为直接量属性,使得 Web 和小游戏平台的性能也得到了可见的提升。
优化场景编辑体验

  1. 优化场景相机的漫游模式,并增加了加速开关
  2. 增加一个场景灯光的开关(默认打开)
    场景灯光开关
  3. 增加模型的最大最小坐标显示
    image
  4. 增加 Transform Gizmo 的吸附功能(通过移动,旋转,缩放的Gizmo操作时,按住 Ctrl 键,就可以按设定的步长进行值的增长
  5. 优化大项目使用体验:降低编辑器内存使用,避免崩溃,优化卡顿

新版动画编辑器和动画数据升级

目前动画编辑器已在动画编辑器内置曲线编辑,与时间轴匹配,并支持任意关键帧之间的时间曲线编辑。


同时,在 3.3 中,我们也完成了动画数据的升级:引入了新的基础曲线类,重构了 AnimationClip,统一了动画和粒子系统使用的曲线数据。这些工作都是为了后续的完善动画系统而准备的,在后续版本我们将支持动画状态机编辑,Blend Tree 动画融合等高级功能。
除此之外,动画编辑器还完成了以下工作:

  • 支持动画根节点隐藏后的动画显示编辑;
  • 优化动画编辑器关键帧与小红线的遮挡关系以及关键帧大小、选中颜色等;
  • 动画编辑器支持按住 shift + 鼠标滚轮滚动来移动时间轴;

平台支持和构建系统优化

在 v3.3 中,我们加入了 windows x64 的构建选项,未来将逐步废除 win32 平台的构建。


在构建面板上,我们也做了诸多优化:

  • iOS 构建填配置选项支持目标 iOS 版本和签名相关的 developer id 配置
  • 构建勾选 md5Cache 后,支持给脚本添加 md5 后缀,确保版本更新;(来自论坛反馈
  • 由于微信部分版本已经支持 astc,目前开放了小游戏平台 astc 的压缩纹理配置;
  • 偏好设置 - Build 新增构建日志打开方式选项;
  • 构建插屏配置面板,支持直接拖拽文件系统的图片放置;
  • 命令行构建支持传入 logDest 指定日志输出路径;
  • 由于 Mac上退出码位数的限制,对命令行构建退出码做了修改;
  • 原生平台构建后将不能二次修改游戏名称;

阴影效果和设置优化

在之前的版本中,阴影的配置一直是一个比较让开发者困惑的功能,我们已经有完整的规划,正在逐步完善中,v3.3 会首先简化阴影的配置,优化软阴影算法,修复阴影的部分效果问题。配置上的调整包含:

  • Shadow color 被迁移为 Shadow saturation 的灰度调节选项,会自动迁移老版本的 alpha 通道
  • 软阴影选项从之前的 X9,X25 等改为 Soft 和 Soft2X
  • 简化阴影贴图的尺寸设置为 High,Medium,Low
  • 去除 SelfShadow 选项,现在都会默认开启自阴影计算
    v3.1

    v3.3

物理系统完善

继 v3.1 支持 PhysX 物理后端以来,多套物理引擎的选择和使用也成为了我们重点关注的使用体验,在 v3.3 中我们不仅加强了物理功能,还尽可能统一了不同物理后端的物理表现。

  • 支持 CCD 连续碰撞检测功能
  • 增加碰撞体最小体积控制,避免节点零缩放导致的一系列问题
  • 支持 PhysX 物理打包字节平台更灵活的配置选项
  • 支持 Bullet 物理中全局控制是否允许自动休眠
  • 支持 Bullet 物理中射线检测过滤 trigger 碰撞体
  • 修复 Bullet 物理中刚体无附加现状的 local inertia

其他

  1. 音频系统在 v3.1 移除所有 AudioClip 资源上的播放控制接口后,开发者颇为不满,在 v3.3 中我们将播放控制接口以标记废弃的方式添加回 AudioClip 资源。我们仍然希望所有开发者能切换到使用 AudioSource 组件的方式来播放音频,这对于未来的音频系统功能强化至关重要。
  2. 输入事件以前是接收到事件就进行派发,如果事件响应逻辑复杂可能会影响到帧回调,导致帧率不稳,v3.3 已调整为帧间记录事件队列,统一在主循环中处理事件队列。
  3. View 和 Screen 接口进行了简化,废弃了一些平台相关接口,将部分 View 的窗口控制功能统一到 Screen 上

重点更新列表

Editor

  • 新版本动画时间曲线编辑和动画编辑器体验优化
  • 各模块曲线编辑器统一:粒子、动画等
  • 优化粒子曲线的编辑操作,添加重置坐标移动范围按钮,支持直接右键编辑关键帧点位置
  • 场景编辑器体验优化
    • 增加一个 场景灯光的开关(默认打开)
    • 优化场景相机的漫游模式,并增加了加速开关
    • 增加模型的最大最小坐标显示
    • 增加 Transform Gizmo 的 吸附功能
  • 支持 HDR 文件导入,引擎内部处理 RGBE 编解码
  • 编辑器性能和体验优化
  • 当 Image 资源被改为 SpriteFrame 类型后,自动修改 texture 的 Clamp 配置为 CLAMP_TO_EDGE,避免边缘混合黑边问题
  • 支持在带动画模型的属性面板上直接编辑动画事件
  • 修正编辑器内的资源泄露问题,降低内存占用
  • 针对微信小游戏平台开启 ASTC 压缩纹理配置
  • 优化 hierarchy 面板性能,增加 prefab 节点直接进入 prefab 资源的编辑功能
  • 优化 console 面板性能,修复大量 log 数据拖慢启动速度的问题
  • Color picker 支持 color gamma 矫正预览
  • Inspector 中支持组件属性的分组显示,使用 @group 装饰器
  • inspector 编辑节点增加复制节点世界坐标
  • 支持显示烘焙结果的 rgb 通道的单个灰度图或者通道的组合
  • 支持自定义的脚本模板,同时在生成脚本时可以使用部分预设变量
  • 支持 Windows 平台上带中文的安装目录
  • iOS 构建填配置选项:目标 iOS 版本,签名相关的 developer id
  • Windows 平台添加生成平台选项, 支持 win32 与 x64 选项
  • 支持脚本 import map
  • 添加了清理代码缓存的功能,入口位于菜单:[开发者]-[缓存]-[清理代码缓存]
  • 编辑器右下角添加引擎版本与编辑器版本不一致的提示
  • Electron 升级到 13.1.4
  • 修复 m1 cpu 的设备构建项目时偶现的进度条停止问题

Engine

  • 优化标准光照模型中的 AO 计算
  • 阴影参数和渲染优化
    • 修复阴影效果,优化阴影边缘虚化算法
    • 将 Shadow Color 迁移为 Shadow Saturation 单通道选项,会自动迁移老版本的 alpha 通道
    • 软阴影选项从之前的 X9,X25 等改为 Soft 和 Soft2X
    • 简化阴影贴图的尺寸设置为 High,Medium,Low
    • 去除 SelfShadow 选项,现在都会默认开启自阴影计算
  • 引入通用曲线类(Curve)
  • 重构 AnimationClip,动画数据重构升级:为动画状态机和复杂动画融合做好准备
  • 优化微信小游戏首屏渲染速度
  • 修复了 UI 透明度级联导致的渲染问题
  • 修复了 Label 重复加入动态合图的问题
  • 粒子曲线使用统一的 Curve 数据
  • 物理引擎
    • 统一各个物理后端的行为表现
    • 支持 CCD 持续碰撞检测
    • 增加碰撞体最小体积控制,避免节点零缩放导致的一系列问题
    • 支持 PhysX 物理打包字节平台更灵活的配置选项
    • 支持 Bullet 物理中全局控制是否允许自动休眠
    • 支持 Bullet 物理中射线检测过滤 trigger 碰撞体
  • 烘培库支持 mac m1 cpu 设备
  • 字节小游戏音频使用 WebAudio 接口实现
  • 事件系统
    • 所有输入事件归拢到游戏主循环中处理
    • AudioSource 支持监听音频开始和结束事件 AudioSource.EventType.STARTED & AudioSource.EventType.ENDED
    • SystemEventType 和 macro.KEY 已经废弃了,改用 SystemEvent.EventType 和 KeyCode
    • 废弃了 SystemEventType,以及 SystemEventType 底下的一些系统事件无关的枚举,请使用 SystemEvent.EventType
    • 废弃静态属性 Event.TOUCH, Event.MOUSE, Event.KEYBOARD, Event.ACCELERATION
  • 简化废弃部分 view 和 screen 接口,统一在平台适配层(PAL)中实现
    • 废弃 view.adjustViewportMeta 和 view.isAutoFullScreenEnabled
    • 废弃 view.enableAutoFullScreen,请使用 screen.requestFullScreen
    • 废弃 cc.winSize,请使用 view.getVisibleSize
    • 废弃 screen.autoFullScreen,请使用 screen.requestFullScreen
    • 废弃 screen.disableAutoFullScreen
  • 修复移除 Spine 动画可能导致的内存泄露(感谢 Github PR from @hailua54

Infrastructure

  • 渲染场景模块原生化:优化原生平台性能
  • 使用可控的离屏 FrameBuffer 进行内容渲染
  • 基于离屏 FrameBuffer 支持 MSAA 抗锯齿(开启项目宏 Enable Antialias 生效):注意,如果之前开启了该项目宏,那么升级为 3.3 之后原生平台性能损耗会有所增加,这是正常情况
  • 内置 Frame Graph 渲染定制层,后续版本将接入渲染管线,开放定制接口给用户
  • 在 Vulkan & Metal 后端支持 Subpass
  • 添加 M1 CPU 的苹果设备上使用 iOS Simulator 调试的能力,需要参考 文档使用
  • binding generator 全面兼容 python 2.7 / 3.x (64 位)

Breaking changes

  • 构建压缩纹理不再带有默认 png 图,如果使用到这个特性的项目,请在项目配置内为已有的压缩纹理配置添加默认图(来自 论坛反馈
  • 目前已支持 HDR 贴图直接导入,之前如果使用 RGBE 格式的 .png 请替换为原始 .hdr 贴图
  • 我们修复了一处 FBX 资源导入问题:若 FBX 模型含有多段动画,第二段及后续的动画都错误地包含了前段的所有动画数据。注意:如果已经配置了动画分割,则可能需要调整。不过我们并未收到外部开发者关于此问题的反馈。
8赞

:grinning: :grinning: :grinning:

恭喜!
先下手再说。

另外,弱弱地请问一下,这个就是上次在上海开发者大会上说的原生效率有极大提高的版本吗?
例如:将更多计算放到原生端去做,等等。

请问动画状态机会在哪个版本出啊 期待 :grinning:

1赞

+1 啊 :joy:

热乎的,前排找茬找bug

我来帮你!
刚下载好,解压,点击图标。启动后,问是否安装dashboard,点是。打开下载网页。不想下载,再看creator3.0的图标存在在DOCK上,但是之前的界面就没有了。。。

image

image

老哥稳强的一匹:rofl:

10号可不是好玩的~

4_f45b1424634a47e5e914ef78c6ffda2c

期望“稳定为王”的小目标先实现(起码把编辑器bug好好改改),其实目前太花里胡哨的东西,我们很少能用到。

3赞
  • 简化废弃部分 view 和 screen 接口,统一在平台适配层(PAL)中实现
    这个在哪里?

添加了清理代码缓存的功能,入口位于 [开发者]-[缓存]-[清理代码缓存]
这个能解决这个帖子的问题吗

1赞

大版本升级啊。3.2.0还没弄明白。

动画状态机+1

2D的灯光什么时候能支持啊

粗略测试了一下,发现以下问题:(这次是正式项目没法提供demo,以往每次反馈问题都会附带demo)

  1. 网页上(Chrome)加载明显变卡(1倍)(之前是3.1.2),而且会抢占所有资源,倒计时跑不了,按钮点不了。加载流程做的事情有,加载10个模型,20个特效到对象池中。然后把30个对象都从池里拿出来,激活一次,触发shader的编译,然后再放回池中。

  2. iOS打包后,xcode一直停在Processing File。 同一个项目,同一个环境,1小时前使用3.1.2打包,刚测试完成。升级到3.3.0后出现,不确定具体是什么原因。

  3. 网页上,打开了多个页签,当切换到其他页签时,update应该会暂停,当回到游戏页签时,update重新执行。以前的版本,update里的deltatime是恒定的(0.08)。3.3.0版本,回来后的第一帧的deltatime是离开的时间(如果离开页签10秒,则deltatime为10)。不知道是否设定如此

关于2,不同版本构建的项目最好是重新清理一下,或者另起一个构建项目尝试一下?

第一次打开创建过的一个场景,下次再打开就报错:
image

好吧,默认打开的路径在assets,应该再往上一层。。
选择上一层,在工程根路径打开就正常了,诡异的是我没有主动打开过assets文件夹。。。应该不会有记忆才对

这可以算是 bug,我尽快修复下