这个版本主要的工作有:
- 包体优化
这个版本继续优化包体。微信小游戏 2D 工程默认配置,启用压缩引擎内部属性,包体减小 160 KB。 - 添加了 UISkew 组件。
- 完善 HarmonyOS Next 的支持,提升了性能。
- 裁切配置支持多个配置。这样可以根据不同平台使用不同的裁切配置。
- 原生平台 Box2D 支持 jsb 模式,性能可以大幅度提升。
- Google Play 的登录、成就 API 支持。
- Spine 多版本支持,目前支持选择 3.8 或 4.2。
2025 年 3 月 14 日更新
引擎
新功能
- 实现 Google Play 自动登录、成就和 PGS Recall API:PR
- 支持 Google Play 成就功能:PR1PR2PR3PR4
- 在基于 CocosRuntime 的平台上支持 WebAssembly 和 WebGPU:PR
优化
- 优化 js_register_spine_initSkeletonData 中的 std::vector 分配:PR
- 支持在非 OpenHarmony 平台上使用 JSVM API,这将使调试 JSVM API 更加方便。 PR
- 删除 jsvm/Object.cpp 和 napi/Object.cpp 中未使用的代码:PR
- 简化 OH JSVM 后端的 se::Object::createJSONObject:PR
- 优化 OpenHarmony 的 se::ScriptEngine::callFunction:PR
- 优化 JS 到 Native 对象的转换(针对 JSVM 和 NAPI 脚本引擎后端) PR
- 优化 WebGPU 实现:如果不支持浮点过滤,则回退到使用不可过滤的设置:PR
- 将 Spine 4.2 运行时更新到 268d0e8:PR
- 调整 Google Play 绑定接口任务回调线程,避免在主线程处理任务PR
bug 修复
- 修复 spine::Vector::setSize 的内存泄漏问题:PR
- 修复 PhysX wasm 内存泄漏问题,并更新 PhysX 到 4.1.2.29882248 以解决内存溢出问题:PR
- 修改基于 CocosRuntime 的构建适配器流程:PR
- 在解析不支持的 Spine 版本时,向控制台打印错误信息:PR
- 修复未启用 Spine 时的构建错误:PR
- 修复预制体添加脚本时,场景不会生成脏标记的问题:PR
- 修复不同纹理对象仍使用相同缓存的 SkeletonData 的问题:PR
- 回滚“将 Android 模板项目与官方默认模板对齐”:PR
- 将 iOS LaunchScreen.storyboard 的部署目标版本更新为 8.0:PR
- 修复 Spine 的远程纹理无法正常显示的问题:PR
- 修复 macOS 平台上因无效的 v8::HandleScope 导致的 EditBox 崩溃问题:PR
- 修复 HarmonyOS Next 平台上 JSVM 后端的一些内存泄漏问题:PR
- 解决 SpineMesh 测试用例在原生平台上 Effect 渲染不正常的问题:PR
- 重构 cc::ArrayBuffer,将大部分实现代码移动到 cpp 文件中:PR
- 修复 HarmonyOS Next 的内存泄漏问题:PR
- 修复 Android 6.0 WebView 上的错误
PR - 修复 WebGPU Attachment 大小不一致的问题PR
- 修复因 Spine 中相同 UUID 导致纹理对象变化,从而在原生平台上引起的渲染异常问题PR1PR2
- 修复插件脚本的属性面板【允许编辑器加载】配置存储不对的问题PR
- 修复 Box2D JSB 在 Windows 上的链接错误PR
- 修复 MouseJoint 中触摸监听器未取消订阅的问题PR
- 修复 Camera 组件的错误注释PR
- 修复编辑器中无法设置 SpriteFrame 的问题PR
- 修复 Spine 资源不兼容没有警告的问题PR1PR2
- 修复 Spine 预览问题PR
- 修复 audio-manager.ts 中 AudioInfo 接口的命名混淆问题PR
编辑器
优化
- 更新 fbx2gltf 到 1.0.8
- 完善构建插件抛异常后的控制台输出和优化引擎压缩属性的界面显示
- 资源处理器 userData 未填写默认值或无效值时不设置默认值
- 更新导入器默认配置的更新流程
- 优化自动图集警告输出时机
- 完善中轴线配置以及数据升级
- 调整 box2dwasm 的迁移逻辑,优化部分代码
- 图形设置改为独立的配置
- 新增拷贝引擎配置 key 的右键菜单选项
- 将 menu 获取裁切模块从 profile 改成 ipc 的方式
bug 修复
- 兼容 MTL 文件没有 path 情况下无法进行复制路径
- 修复数值类型判断以及特效节点值的区间问题
- 修复旧项目升级后引擎模块选项缺失导致界面出错
- 修复创建原生模板失败
- 修复切换引擎模块配置时界面的物理模块显示隐藏没有更新
- 修复拖动 2D 元素后再拖动 3D 元素,3D 元素坐标错误的问题
- 修复旧的获取模块裁切的方式
- 修复 enum 类型值的错误转换
- 修复属性被缓存的节点未能挂载导致属性切换时节点未能展示
- 修复项目设置引擎模块 cache 缺失某些模块和全选时联动依赖项
- 修复让挂有普通脚本节点的聚焦效果与普通节点保持一致
- 修复窗口过小时内容撑出高度的范围
- 修复引擎模块未选中配置但设置为全局时,没有广播到预览等场景的问题
- 修复多选节点移动时,基准线显示错误的问题
- 修复移动探针节点,不显示白色基准线,以及无法通过箭头蓝红绿中间移动探针的问题
- 修复 project 测试用例报错
- 补齐 engine 的裁切导入导出函数
- 删除当前选中的配置需要更新选中的 key
- 修复 3D 工具可见性移动节点后失效以及修复吸附计算错误的问题
- 修复 3D 视图的正交相机视角下,基准线显示异常的问题
- 修复吸附功能吸附到中心轴基准线的问题
- 完善场景 Snap 快捷键显示布局
- 修复场景快捷键提示图在英语下排版错误的问题
- 修复编辑器预览,无法加载 bundle 的问题
2025 年 2 月 28 日更新
引擎
新功能
- 增加对旋转斜变形(rotational skew)的支持: PR
- 添加 Box2D JSB 支持,提升原生平台上 2D 物理游戏性能: PR
- 支持 Spine 4.2: PR1, PR2, PR3
- 回退了beta0管线拆分后处理,恢复至3.8.5状态。
- breaking change:
- 关闭reflection probe blend,减少fragment sampler总数,使得standard surface能在WebGPU跑起来。
- 移除WebGPU对旧管线的支持,只支持新管线。
优化
-
优化包体
- 优化 tween.ts 代码大小: PR
- 优化反射探针、粒子、CSM 层、地形的代码大小: PR
- 对 XR 模块进行 Tree-shaking: PR
- 优化 render-data.ts 代码大小: PR
- 通过 USE_XR 常量剥离 XR 相关代码: PR
- 对 weak-cache.ts 进行 Tree-shaking: PR
- 在小游戏平台上移除未使用的 pal input 模块: PR
- 再次优化代码大小: PR1, PR2
- 优化代码大小: webgl-device.ts & webgl2-device.ts: PR
- 标记更多属性为 mangle: PR
- 优化代码大小: text-utils.ts: PR
- 优化代码大小: text-processing.ts: PR
- 优化代码大小: mesh.ts: PR
- 优化代码大小: webgl-commands.ts & webgl2-commands.ts: PR
- 优化代码大小: scene-globals.ts: PR
- 优化代码大小: sprite/sliced.ts、mesh-buffer.ts、scene/camera.ts: PR
- 优化代码大小: 增加内部 API UIRenderer._markForUpdateRenderData: PR
-
重构 2D 组装器: PR
-
为 RichText、Mask、Graphics、UISkew、AffineTransform 添加更多特性裁剪设置: PR
-
仅在原生端导出 memory-pools,用于 JS 和原生端共享内存: PR
-
重构:提高 isValid 的类型安全性: PR
-
重构:提高 js.isNumber, js.isString 的类型安全性: PR
-
WebGPU
修复
- 修复 Spine 在动画播放完成后调用销毁函数导致的崩溃: PR
- 修复 JSVM 无法使用 console.log 输出日志的问题: PR
- 修复调用 callStatic Method 时的跨线程问题: PR
- 修复引擎在 asset-db 初始化期间报错的问题: PR
- 修复编辑器环境下脚本未正确初始化的问题: PR
- 修复 Sprite Inspector(精灵检查器)的国际化配置问题: PR
- 修复缓冲区超出范围的问题: PR
- 修复 HarmonyOS NEXT 平台在使用 JSVM 时重启崩溃的问题: PR
- 修复编辑器预览中脚本初始化顺序错误的问题: PR
- 因 WebGPU 限制禁用探针混合(probe blend): PR
- 修复 ParticleSystem2D 重新激活后粒子无法显示的 Bug: PR
- 修复 splash-screen.ts 的 mangle 问题,JSON 中的接口数据不应被 mangle: PR
- 修复 Billboard.texture 的类型错误: PR
- 修复编辑器中 Gizmo 位置错误和矩形边框问题: PR
- 修复在 Sprite Inspector 面板上设置 SpriteFrame 时出现假死的问题: PR
- 回滚 “add builtin pipeline passes (#17985)”: PR
- 修复 tilemap 模块中的类型问题: PR
- 修复 RenderPass.computeHash: PR
- 修复 String.substr 已废弃的问题,改用 String.substring: PR
- 修复 EGL 崩溃: PR
- 修复旧版本 fbx 文件中含有中文路径时可能导致转换不成功的问题
- 修复 3.8.6 beta0 引入的原生平台上 spine 潜在崩溃问题: PR
- 修复 3.8.5 引入的原生平台上 WebSocket 触发 onError 回调后潜在的崩溃问题: PR
- 修复 Harmonyos Next 平台 WebSocket CPU 占用率过高的问题: PR
- 修复材质pass uniform buffer越界的问题 PR
- 修复重构 WebGPU Bind Group 后导致的 WebGPU 资源复用的相关问题 PR
- 修复原生平台上 2D 物理节点的 MotionStreak 显示不正确的问题:PR
- 修复在某些 windows 设备上导入 fbx 可能报错的问题
编辑器
新功能
- 为 UISkew 组件添加 Rotational 选项
- 添加更多的模块裁切配置
- 项目设置-模块裁切-支持多份裁切配置:
用户如果之前有定制过裁切模块,那么会将原来的配置生成一份“迁移配置”- 可以在多份配置中选一个配置作为“全局配置”
- 选中某个配置,可以在右侧进行编辑器修改(包括重命名)
- 支持 Spine 4.2,可在“项目设置” -> “功能裁剪” 面板中选择 Spine 版本
注意:
- 旧项目升级,需要升级到 Spine 4.2,请确保使用 Spine 编辑器将现有 Spine 工程导出为 4.2 的资源格式,覆盖到项目 assets 的对应目录下
- 切换 Spine 版本后,请重启编辑器或重启场景进程
- 由于 Spine 4.2 移除了 Effect 功能,无法使用 JitterEffect、SwirlEffect 功能
- 分离引擎插件功能目前不支持 Spine 4.2
- 引擎模块支持多裁切配置
- 新增荣耀平台小游戏入口
- 场景支持显示原点 x、y、z 中轴线
- 更新工具,部分二进制支持 arm64 和 x86 的胖包
- canvas、mesh-renderer、ui-transform 的 gizmo 支持 UISkew 效果
优化
- 部分 UI 优化
- 调整 dump 的基类的 parentElement 的类型声明并统一获取
- 调整 dump 中类型组件的结构
- 完善 should_hide_in_hierarchy 创建逻辑
- 预览的滚轮速度调整为主场景中摄像机的滚轮速度
- 调整编辑器预览时脚本初始化的顺序
- 更新 astcenc 到最新的 5.2.0,提升性能
- 重新签名所有的 Windows 文件,避免出现签名不一致的问题
bug 修复
- 修复原生平台构建模板拷贝位置问题
- 修复支付宝平台的 game.ejs 构建模板支持
- 修复引擎模块勾选 option 时报错 undefined
- 修复引擎模块 deprecated 读取的方式
- 修复资源处理器配置的默认值无效
- 修复插件脚本排序方法
- 修复自动化场景测试的问题
- 修复 PackerDriver 打包项目使用的 cc 入口时忽略物理后端导出函数的问题
- 修复在场景无法通过点击 web view 与 videoplay gizmo 来选中的问题
- 修复设置窗口缩放级别导致鼠标坐标错位的问题
- 修复 set-property 设置 array 属性时子元素是 Prefab 元素无效的问题
- 修复’内联枚举’和’压缩引擎内部属性’的提示
- 修复带问号标记的属性表达式的属性混淆问题
- 修复 2D 视图聚焦 3D 节点时计算边框过小导致无法看到的问题
- 修复编辑器场景无法切换到 box2d-wasm 的问题
- 修复构建平台 buildMode 设置后新建任务不为默认值的问题
- 避免 canvas resize 影响容器的 resize
- 修复拖拽 Prefab 判断是否创建 Canvas 节点错误的问题
- 修复创建节点设置 layer 时子节点未同步的问题
- 修复自定义宏宽度过小时隐藏编辑操作按钮的问题
- 修复 gizmo 获取 nodes 时未正确排序 parent 为 null 的节点
- 修复设计分辨率改变时 2D 摄像机不需要居中的问题
- 修复预制体动画脚本调整 position 时模拟器预算卡住的问题
- 修复场景保存后重启未记录的问题
- 修复拖动帧动画图片数组排序错误的问题
2025.1.25
下载链接
更新说明
引擎
新功能
● 支持多个Spine共享一个纹理集: PR
● 添加 Node.x/y/z 的 gettter/setter:PR
● HarmonyOS Next平台支持Arkts调用引擎接口(evalString接口实现)
● 添加 UISkew:PR
● Builtin管线拆分了后处理,独立成了模块:PR
- 社区版需要手动挂载这些后处理模块,版本迁移尚未完成。
优化
● 优化包体(微信小游戏 2D 工程默认配置,3.8.6 启用”压缩引擎内部属性“,包体减小 120 KB)
- 优化 pointer-event-dispatcher.ts 的代码大小: PR
- 优化可选链的代码大小: PR
- 优化 trail.ts 的代码大小: PR
- 优化 webgl-device.ts 的代码大小: PR
- 优化 webgl2-device.ts 的代码大小: PR
- 支持混淆静态私有属性: PR
- 通过配置进一步混淆静态属性: PR
- 优化 audio 代码大小: PR
- 再次优化代码大小: PR
- 为粒子3D模块内联枚举: PR
- 为 CCObjectFlags 内联枚举: PR
- 修复物理2D框架中的类型问题: PR
- 优化物理2D内建后端的代码大小: PR
- 优化PhysX后端的代码大小: PR
- 优化Box2D-WASM后端的代码大小: PR
- 优化Box2D-JS后端的代码大小: PR
- 优化代码大小:为 Node.getUITransformComp 添加内部方法,可以混淆该方法,以避免调用 ._uiProps.uiTransformComp: PR
- 优化 input.ts、tiled-layer.ts 和小游戏的代码大小: PR
- 优化粒子系统代码大小: PR
- 通过显式定义构造函数优化代码大小: PR
- 使用array.forEach替代for of以优化代码大小: PR
- 优化了math/color.ts的代码大小: PR
- 优化了webgl-texture.ts/webgl2-texture.ts的代码大小: PR
- 优化了webgl-swapchain.ts和webgl2-swapchain.ts的代码大小: PR
- 优化了gfx.FormatInfos定义的代码大小: PR
- 优化了sprite-frame.ts的代码大小: PR
- 为gfx-webgl/gfx-webgl2内部模块添加了@mangle jsDoc标签: PR
- 为内联添加 SystemPriority 枚举: PR
- 将类从接口转移到实现中: PR
- 支持对私有属性进行名称混淆: PR
- 通过添加辅助函数从 pipelineSceneData 中获取数据来优化代码大小: PR
- 混淆Bullet类的属性: PR
- 重构了部分代码以减少包大小: PR
- 优化 TIFFReader: PR
- 优化了 VideoPlayer 和 WebView 的代码大小:PR
- 优化 2D 模块的代码大小:PR
- 优化 draw-batch.ts 和 batcher-2d.ts 的代码大小,移除不必要的 setter/getter:PR
- 优化小游戏适配器的代码大小:PR
- 优化 scheduler.ts 的代码大小:PR
- 优化 AudioManager 的代码大小:PR
● 在tween模块中增加更多覆盖,添加 toString 方法以便调试: PR
● 添加 WebGPU 布局运行时支持: PR
● 改进Spine资产预览面板功能: PR
● 改进了在Sprite中设置SpriteFrame后对SpriteAtlas的处理: PR
● 修改iOS项目的支持目标包括iPad: PR
修复
● 修复 ui-component.ts 中的 as any,避免丢失 UIComponent 类型: PR
● 修复 trail.ts 中使用 as any 导致的 mangleProperties 问题: PR
● 添加支持为 Tilemap 启用纹素偏移功能: PR
● 修复描述符集初始化错误: PR
● 修复局部设置问题: PR
● 修复Android 6.0及以下版本兼容性问题导致的崩溃: PR
● 不链接不需要的框架: PR
● 修复 node._getUITransformComp 在原生平台上未找到的问题: PR
● 去除支持 iOS 11 以下和 macOS 14 以下的代码 : PR
● 修复当 fileSource 变量为空时的问题: PR
● 修复启用动态图集时 _nativeData 为null的问题: PR
● 优化预制件和Spine视图逻辑,添加重置摄像头视图功能: PR
● 修复 [Tween] callFunc 在 updateUntil 前可能被调用多次的问题: PR
● 在非原生平台上剥离 ui-opacity.ts 中与JSB相关的代码: PR
● 修复 [Assets] _updateAdaptResult 无效大小: PR
● 添加 freezeColor 内部方法以减少代码大小: PR
● 剥离 jsb-utils.ts: PR
● 将一些属性标记为 @dontmangle: PR
● 修复编辑器中的预览场景应该在帧渲染结束时销毁对象: PR
● 修复Spine渲染的第一帧未受到父级透明度影响的问题: PR
● 修复一些类型问题和警告: PR
● 修复一些类型问题: PR
● 修复 [Scene] 帧不应无效,它可能已被释放: PR
● 添加WebGPU BindGroupLayout数据结构: PR
● 修复 DragonBonesAsset.constructor 中的一个拼写错误: PR
● 修复编辑框输入类型为数字时输入小数点错误的问题: PR
● 修正了Tween.parallel中嵌套Tween.set时作用对象可能不正确的问题: PR
● 删除cocos/render-scene/config.ts中的死代码: PR
● 移除将AMOTION_EVENT_TOOL_TYPE_STYLUS事件当作鼠标事件处理的逻辑: PR
● 修复了Rich Text中maxWidth的i18n属性名称不正确的问题: PR
● 修复了将包含Spine资产的预制体添加到节点树中时,在场景编辑器中出现显示异常的问题: PR
● 修复了 utils.MeshUtils.createMesh在原生平台上崩溃的问题: PR
● 修复了ScrollView无法处理鼠标滚轮事件的问题: PR
● 启用在GAME_VIEW中使用平面反射探针: PR
● 修复了抖音小游戏平台上模拟器报告错误而真实设备不显示视频的问题: PR
● 修复了2D粒子在原生平台上崩溃的问题: PR
● 修复了数学类型的toString方法: PR
● 修复了UI元素批处理和分割调整引起的UI错误问题: PR
● 还原了“修复在特定条件下UI批处理失败”的更改: PR
● 调整了管线中构建渲染图的时机: PR
● 修复了pointerEventProcessorList可能未重新排序的问题: PR
● 将FETCH_TIMEOUT时间从3秒调整为30秒: PR
● 修复了重新父级化的项在超出遮罩裁剪矩形范围时仍可被触摸的问题: PR
● 修复了由于无效的上下文导致Android平台崩溃的问题: PR
● 更新build-wasm-libs.yml,应用优化包大小的补丁: PR
● 精细化了节点检查面板中throttleUpdate的使用: PR
● 修复了由于不安全调用ALooper_pollAll接口导致的潜在ANR问题: PR
● 修复了禁用并重新启用节点后,Spine无法正常显示的问题: PR
● 修复了运行时Web适配器获取错误的问题: PR
● 修复了Spine中的内存泄漏问题,因为没有调用freeStoreMemory: PR
● 修复了Sprite和Label的Assembler代码扩展性问题: PR
● 修复了Spine中自定义材质的动态Uniform设置不起作用的问题: PR
● 修复了暂存缓冲区的问题: PR
● 修复了调整反射探针大小后图像拉伸的问题: PR
● 修复了Web中调用spine.setAttachment时,由于使用错误的纹理而导致的视觉故障: PR
● 修复了在gameview中设置Camera组件的targetTexture无效的问题: PR
● 改进了Spine预览功能: PR
● 添加了内置的管道 pass: PR
● 修复了 MTLDevice.mm 宏定义问题: PR
● 视频播放器进入全屏后位置错位(Web): PR
● 音频播放完成后,事件键应清理: PR
● 继续移除未使用的平台支持: PR
● 修复了UI批处理在特定条件下失败的问题: PR
● 改进了Spine预览UI控制: PR
● 修复HarmonyOS Next平台V8引擎Restart奔溃的问题
● 修复HarmonyOS Next平台的Outline不生效的问题
● 修复HarmonyOS Next平台的重力传感器无法设置enable与disable
● 修复HarmonyOS Next平台构建面包设置加密JS无效的问题
● 修复HarmonyOS Next平台判断文件是否存在接口未处理绝对路径的问题
编辑器
新功能
● 构建面板支持"压缩引擎内部属性"功能。
勾选后,会在项目根目录下创建 engine-mangle-config.json 文件,其格式如下:
若没有特殊定制需求,保持默认值即可。默认情况会对引擎内所有的 private 属性进行压缩。
高级用法及字段说明:
-
mangleList: 定制需要强制压缩的 protected 或者 public 的属性列表。
格式为:
[“className.propName”, “interfaceName.propName”, “className”, “interfaceName”]只填写 class 名、interface 名表示对其所有属性都要压缩。
-
dontMangleList: 定制不要压缩的属性名单。格式类似 mangleList。
-
extends:继承其它配置,做额外的平台定制,继承项里面的 mangleList, dontMangleList 将与父配置合并。
-
mangleProtected:一般情况下,保持 false 即可。此配置表示是否要对引擎内所有的 protected 属性启用压缩。若设置为 true 并且项目中有继承引擎的类型和操作引擎类型的 protected 变量,则需要额外配置对应的 dontMangleList。
● 支持 UISkew 组件
已知问题:
- 添加 UISkew 组件后,gizmo 选中物体后,边框显示不对。(会在后续版本中修复)
- 若父节点存在 UISkew 组件,当前节点的 world scale、world rotation 将不再准确,尽量使用 local scale 与 local rotation 修改当前节点的缩放和旋转。( 原因:Skew 变换会修改世界矩阵中的 scale、rotation 分量,导致无法从世界矩阵中正确还原出世界 SRT 分量)
● 预制体与 Spine 预览,添加复位摄像机功能
● 更新工具,部分二进制支持 arm64 和 x86 的胖包
优化
● 完善预览的缩放操作,使其与普通场景类似
● 完善 Spine 预览,添加属性和播放按钮
● 完善拖拽预制体与资源到场景中的创建位置优化
● 修复并完善拖拽资源创建节点与材质赋值给节点的功能
修复
● 修复带问号标记的属性表达式的属性混淆问题
● 修复 2D 视图聚焦 3D 节点时计算边框过小导致无法看到的问题
● 修复编辑器场景无法切换到 box2d-wasm 的问题
● 修复构建平台 buildMode 设置后新建任务不为默认值的问题
● 避免 canvas resize 影响容器的 resize
● 修复拖拽 Prefab 判断是否创建 Canvas 节点错误的问题
● 修复创建节点设置 layer 时子节点未同步的问题
● 修复自定义宏宽度过小时隐藏编辑操作按钮的问题
● 修复 gizmo 获取 nodes 时未正确排序 parent 为 null 的节点
● 修复设计分辨率改变时 2D 摄像机不需要居中的问题
● 修复打包时拉取代码错误仍继续的问题
● 修复预制体动画脚本调整 position 时模拟器预览卡住的问题
● 修复场景保存后重启未记录的问题
● 修复拖动帧动画图片数组排序错误的问题
● 修复部份 ui-kit 的 bug