各位开发者大家好,
我们今天正式发布 Egret 5.3.6 版本。Egret 5.3.6 仍然是一个抢先预览版,在这个版本中我们为各位开发者带来如下功能:
- JavaScript 模块支持
- 全新的 EuiCompiler
- 运行时改进
- Inspector 更新
其中 JavaScript 模块支持和 EuiCompiler 我们建议正在开发中尚未上线的项目使用,运行时以及 Inspector 更新所有项目均可使用。
JavaScript 模块支持,大幅改进编译速度(beta)
这项技术我们率先使用在 EgretPro 中,在这个版本我们将其移植到了 Egret 5.3 版本中,以保证尽可能多的存量开发者可以使用此功能。
在不支持模块的老式浏览器中,如果一个 JavaScript 文件要想给另外一个文件暴露出去一部分数据或者一个变量,那只能将它定义在全局的作用域下,并根据他们的依赖关系来决定加载顺序。
白鹭引擎构建管线中的 IncrementBuild 插件将会分析您的游戏逻辑依赖关系,并生成一个 manifest.json 文件,游戏在调试时会加载这个 manifest.json,根据其中的脚本顺序逐个加载 JavaScript 代码。
这种方式带来的问题是,随着项目不断变大,IncrementBuild 插件的依赖关系检查会使游戏的编译速度会越来越慢,而 JavaScript 模块中,由于所有的依赖关系都是显式设置的,所以不存在此问题。
在 5.3.6 版本中,我们允许开发者使用 JavaScript 模块,并提供了 webpack 打包器,它会将多个 JavaScript 模块文件打包为一个文件,使得其可以在不支持 JavaScript 模块的旧式浏览器上运行。
经过与白鹭合作的开发者抢先测试,将一个代码总量 20 万行,包含 1700 个 TypeScript 文件的重度挂机游戏项目迁移至 JavaScript Module 格式花费了一人一个星期时间,而这份投入非常的值得。经过开发者的实际反馈,在修改前编译速度大约为 40 秒一次,修改后仅需 3 - 4 秒,这可以为每位前端开发人员每天节省一小时的时间。
如果您对这项改动感兴趣,但是担心项目过大而感觉无从下手,可以联系白鹭引擎的官方技术支持(微信号:egretengine),寻求白鹭引擎官方团队的支持。
全新的 EuiCompiler(beta)
在使用白鹭引擎开发的游戏中,UI 以及相关逻辑是工作量最大的部分之一。在 Egret 5.3 系列版本中,我们决定全面改进 UI 的 开发体验。为此我们先是发布了全新的 Egret UI Editor,并逐步迭代至 1.9 版本。除此之外,我们将在这个版本中为大家带来全新的 EuiCompiler。
EuiCompiler 是引擎中的 ExmlPlugin 的升级版本,他实现了和 ExmlPlugin 一致的功能,但是内部代码结构更加清晰并具备可扩展性。开发者可以扩展 EuiCompiler,为其加入符合自己游戏需求的定制功能,诸如:浮点数值擦除,国际化语言包、资源文件检查等。
EuiCompiler 的第一个版本暂时只支持发布为 JavaScript 格式的皮肤,我们后续将会为其添加 JSON 以及 ArrayBuffer 格式的皮肤支持。
运行时改进
除了 JavaScript 模块以及 EuiCompiler 带来的开发效率改进外,我们也对引擎的运行时进行持续优化,具体包括:
- vivo 小游戏平台支持小游戏引擎插件功能
- 修复部分设备浏览器上切换页面后,任意点击都会触发输入法的问题
- 修复滤镜的父节点矩阵变化后,子节点显示异常问题
- 修复 ttf 字体注册方法在 EgretNative 失效的问题
- 修复 EgretNative 开启原生加速后,MovieClip 生成的显示对象使用多滤镜渲染存在的错误
- 修复 5.3.5 版本引擎在 EgretNative 上开启原生渲染后显示错位的问题
Inspector 改进
在这次更新中我们也更新了 Egret Inspector 至 3.5.1,版本。主要修复如下问题:
- 修复 TOUCH_END 事件不能触发的问题
- 修复显示对象 visible = false 时,还能被选取的问题
- 修复游戏的 url 路径中有特殊符号时,不能正确解析的问题
后续更新
在这次版本发布后,白鹭引擎后续研发重点主要集中在如下几个方面:
- Egret Native 的使用体验
- 在现有 2D 项目中更方便的引入 3D 内容
- EUI 相关功能的进一步优化