这个版本主要的工作有:
2D 3D 包体优化
- 2D 空工程默认配置:减小 360KB
- 3D 空工程默认配置:减小 384KB
- 2D 工程加上必要模块(UI、spine、音频、只选 WebGL2、开启 wasm brotli)减小 200 KB
这一工作将持续进行,欢迎大家下载体验、验证和反馈。
Node 属性 setter 回退到3.8.3 版本
3.8.4 中,为了属性设置符合引擎设计预期,我们修正了一个历史问题,见此贴:[3.8.4 升级必读]:Node 的一些 set 接口行为的修正
但这对很多项目带来了不兼容。
考虑到这样的用法并不会带来严重的副作用,引擎组3.8.5撤回了这个修改,并在以后的版本中保持不变,以实现最大的兼容性。
CRP 管线添加 PipelinePass 支持
开发者可以通过编写 Component 来新增后处理等渲染效果,不需要改写整个管线。
支持 HarmonyOS Next API12
大家可以一键发布到 HarmonyOS NEXT 了。
支持手动加载 Wasm 模块,加快首屏启动时间
3.8.x 支持了 WASM 模块分离,使 WASM 模块不再影响小游戏主包。 但在游戏启动时,依然需要先加载 Wasm 相关模块,才能启动引擎。
3.8.5 中,WASM 一但勾选了手动加载, 引擎在启动时将不再自动加载该模块,用户在使用相关模块功能之前,需要手工确保该模块已经加载。
此特性支持:小游戏、H5、原生平台。
编辑器需要勾选,然后需要自己确保使用前加载必要的Wasm 模块。
对应的接口: loadWasmModuleXXX
,XXX 为对应的模块名。
具体的接口名见下面的 PR 链接。文档后续会补上。
新平台支持
- google play 平台支持
- 咪咕平台支持。
Electron 升级
编辑器升级了 electron 版本到 v31.3.1,提升了编辑器运行性能、启动速度,插件开发者可以使用最新的 NodeJS 20.15 API。
2024.12.04
为了更好地发布到 google play,新增 google play 构建平台。该平台默认集成 google 支付,文档后续会补充。同时,默认的渲染后端是 vulkan。
同时该版本回退了 beta0 引入的使用 $ 作为私有变量的压缩标记。后续版本会改成只要是私有变量、未导出变量就自动压缩。不过仍会保留选项供开发者选择是否启用。
下载链接
更新说明
引擎
修复
● 修复原生平台上 touchEvent.getUIDelta 返回错误的 delta 值的问题。PR
● 修复 mac 平台关闭 gfx 线程分离后 autorelease 类型 NSObject 的泄露问题。PR
● 修复了WebGPU Chrome下白屏问题:PR
● 修复InstancingBuffer下光照异常问题: PR
● 优化Web自定义管线执行逻辑:PR
● 修复原生平台InstancedAttribute不支持非Float Format:PR
● 修复原生平台上,场景标识为 autorelease 类型,切换场景后旧场景关联的资源无法被释放的问题。PR
● 修复 3.8.5-beta0 引入的 LightProbe 显示异常问题。PR
● 修复 3.8.5 Tonemapping上屏时viewport大小不对的问题。PR
● 修复 3.8.4 原生场景内存泄露的问题。PR
● 修复 3.8.5-beta0 引入的 淘宝小游戏加载声音测试例报错问题 PR
● 修复 3.8.5-beta0 引入的 淘宝小游戏 启动时,模块加载不到的问题 PR
编辑器
新功能
● 新增 Google Play 构建平台
修复
● 修复打开工程会有异常报错的 bug
● 修复窗口缩放不是 1 的时候,编辑器内预览点击错位的 bug
● 修复本地化编辑器无法使用的 bug
● 修复资源面板导入资源不刷新的 bug
2024.11.19
下载链接
更新说明
引擎
新功能
● 添加手动加载 Wasm/AsmJS 模块的功能,可用于提升首场景加载速度:PR
● node.setSiblingIndex 支持传入负数的 index,表示在子节点数组中从后往前索引:PR
● 新管线添加PipelinePass支持,用户可以通过添加Component的形式新增后处理等效果:PR
优化
● 包体优化
- 移除 web 平台 gfx 层无用的代码,通过 terser 压缩 gfx 模块中的内部属性长度:PR
- 构建引擎代码支持
内联枚举
和私有属性压缩
的功能,内部属性
通过 $ 后缀标识,会在构建的最后阶段通过 terser 压缩属性名称:PR1,PR2,PR3,PR4 - Spine 模块包体优化,体积相比 v3.8.4 缩减 40% 左右:PR1,PR2,PR3,PR4
- 显示声明 ts 类的构造函数,避免生成无用代码:PR
修复
● 修复Android平台切后台或者被其他Activity覆盖时,收到WebSocket消息,会造成jni报错导致崩溃,修复PR
● 修复角色控制器可能不触发 onControllerTriggerEnter 事件问题:PR
● 修复 bullet 引擎射线检测的错误:PR
● 修复 box2d 射线检测遇到 mask 不一致物体导致出现的问题:PR
● 抖音平台使用引擎内置的 physics 引擎:PR
● 修复 box2d 在 Contract 回调函数销毁节点的崩溃问题: PR
● 修复UiOpacity在web平台上切换opacity的父节点时造成异常的问题PR;
● 修复UiOpacity在native平台上首次切换到新节点时,没有计算父节点的透明度的问题PR
● 修复了 bullet 的 raycast 没有导出 closest hit fraction 的问题:PR
● 修复 Bridge 同一事件注册多个监听函数导致监听函数执行和重复注册问题:PR
● 修复 scrollview 频繁创建对象的问题:PR
● 修复 bullet 的内存泄露问题:PR
● 修复修改设计分辨率没立即生效的问题: PR
● 修复热更新文件很多时,会造成UI页面卡主的问题: PR
● 调整瓦片地图图集相邻时使用出现的明显间隔:PR
● 修复UiOpacity在web平台上会出现无法显示的问题:PR
● 修复tsx文件对象层自定义属性读取错误:PR
● 修复安卓平台上反复进出游戏导致的崩溃问题:PR
● 修复调用 node.setWorldScale(0, 0, 0) 后 worldMatrix 中含有 NaN 值的问题:PR
● 修复 gfx webgl1/2 后端对 renderBuffer 状态错误复位的问题:PR
● 修复原生平台上 C++ TypeArrayTemp::set 没有考虑自身 byteOffset 的问题:PR
● 修复SamplerInfo 各向异性过滤,最大支持16。PR
● 修复编辑器预览到builtin材质出错需重启的问题。PR
● 修复原生平台上 mesh.setInstancedAttribute 无法支持 INT 类型的 attribute 的问题:PR
● 修复若干 Spine WASM 模块关于 String 参数相关的 API 的绑定问题:PR
● 修复 2D 物理引擎,RigidBody2D 类型修改后,PhysicWorld 中的 _animatedBodies 没有更新的问题:PR
● 修复了原生平台Camera Component中Rect效果不对的问题。PR1 PR2
● Node 的 position/rotation/scale 等设置方法改回和 v3.8.3 一样的方式 PR
编辑器
新功能
● 场景视图新增 “查看/选择” Gizmo 模式
● 相机漫游增加鼠标滚轮调整基础漫游速度快捷功能
● 裁切模块支持联动的 flags 配置,比如是否开启手动加载 spine 等
● 属性检查器支持预制体与 Spine 支持预览
● 升级编辑器的 electron 版本到 31.3.1
优化
● 层级管理器拖拽节点与 UI 表示的优化,减少误操作的几率,并调整区域的判断,根据鼠标的左右位置判断多层级的节点归属
● 场景视图中选中预制节点选取优化,第一次选中优先选取预制根节点,第二次选取目标点,后续在依次向上选取
● 统一 windows 与 mac 平台主窗口的标题显示,加入所属项目名
● 完善属性面板属性的 tooltip 显示效果
● 完善场景 3D 视图滚轮缩放视图的效果
● 完善脚本、引擎、原生模拟器引擎编译提示
● 优化脚本很多的项目修改某个脚本后导致等待时间太久的问题
修复
● 修复构建时自动图集压缩纹理后还保留原图的问题
● 修复 2D 视图无法框选 2D 节点的问题
● 修复参考图设置坐标与缩放无效的问题
● 修复编辑器对预制嵌套修改,导致相关节点丢失的问题
● 修复新建 Prefab 后,进入 Prefab 编辑器模式下对根节点新建 UI 组件,场景中不显示 UI 的问题
● 修复属性检查器执行删除嵌套数组元素的操作,会导致外层数据误删的问题
● 修复裁切面板的全选等逻辑不联动的问题