这个版本主要的工作有:
- 包体优化
这个版本继续优化包体。微信小游戏 2D 工程默认配置,启用压缩引擎内部属性,包体减小 120 KB。这是截止到这个社区版本的结果,包体优化还在持续中。 - 添加了 UISkew 组件。
- 内置管线后效组件化。
- 完善 HarmonyOS Next 的支持,提升了性能。
- 还在进行的功能
- 裁切配置支持多个配置。这样可以根据不同平台使用不同的裁切配置。
- 原生平台 Box2D 支持 jsb 模式,性能可以大幅度提升。
- google play 的登录、成就 API 支持。
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