LayaAir3.2-beta.1的版本中,我们已介绍了3.2是真正的全平台发布版本《LayaAir3.2来了:性能大幅提升、一键发布安装包、支持WebGPU、3D导航寻路、升级为真正的全平台引擎》。
在其后的beta版本迭代中,我们不仅及时修复了开发者们反馈的BUG,补上了beta.1欠下的鸿蒙Next系统支持,还额外新增了包管理器、程序蓝图(可视化编程)等重要的功能模块。
(LayaAir3视频展示精简版)
完整版视频地址(点底部阅读原文可直接跳转):
https://www.bilibili.com/video/BV1u8xreREWu
经过四个多月的沉淀,今天,终于迎来了LayaAir3.2.0正式版,欢迎大家下载使用。
以下简要介绍beta.1之后陆续更新的功能与优化。
支持发布HarmonyOS Next系统
鸿蒙系统(HarmonyOS)作为华为自主研发的操作系统,已建立了完整的生态体系。鸿蒙系统的新版本HarmonyOS NEXT 在继承前代优势的基础上,进行了深入的技术优化和生态拓展,涵盖从操作系统内核、文件系统,到编程语言、编译器/运行时、编程框架,再到设计系统、集成开发环境,以及 AI 框架和大模型等全栈自研。随着 HarmonyOS NEXT 的发布,鸿蒙生态将迎来更广阔的发展空间和丰富的应用场景,未来有望成为全球智能互联领域的领军者之一。
作为华为的技术合作伙伴,Layabox 已在 LayaAir1.8.16 和 LayaAir2.13.5 完成了 HarmonyOS NEXT 系统的适配和发布。如今LayaAir3.2.0 版本完成对 HarmonyOS NEXT 的适配,这意味着 LayaAir 引擎全系列版本现已全面支持 HarmonyOS NEXT 系统。
(LayaAir3-IDE的项目构建发布界面截图)
对开发者而言,这一支持使他们能够更加轻松地将游戏或应用基于 LayaAir 引擎发布到 HarmonyOS NEXT 系统。该功能不仅简化了发布流程,减少了开发者的工作量,还为产品带来了更多的市场机会。
支持程序蓝图
LayaAir3.2 新增对程序蓝图的支持,为开发者提供了一种更加直观、高效的开发方式,极大地提升了开发流程的可视化和易用性。程序蓝图作为一种图形化编程工具,允许开发者通过拖拽引擎API和连接线来实现逻辑功能,代替了传统的代码编写。这不仅降低了编程门槛,让没有深厚编程背景的开发者也能参与到项目的开发中,还显著提升了团队协作的效率,因为程序蓝图能够让开发流程更具可视性和易理解性,便于各成员之间快速沟通和调整。
(程序蓝图交互动图)
在游戏开发中,蓝图能够快速实现复杂的交互逻辑和视觉效果,这对于快速迭代和原型设计尤为重要。LayaAir3.2 对程序蓝图的支持,降低了开发复杂性,让开发者能够快速构建、测试和调整游戏逻辑,同时减少了编码错误的可能性。使得开发者可以在开发早期快速验证创意和游戏机制,从而减少了开发风险和成本。同时,蓝图的可扩展性和可重用性也大大增强了项目的灵活性。
(点击查看高清大图)
平台发布的优化更新
在构建发布的配置项上,3.2正式版新增支持了远程主包的设置,在小游戏平台这种包体受限的环境下,对于大型项目,主包中可以仅保留代码部分,所有的资源都通过远程进行加载使用。
(远程主包设置界面截图)
微信小游戏平台方面,新增适配了引擎wasm库的使用。除此之外,还对使用微信小游戏缓存时,面对大量文件情况时存在的性能问题进行了优化。
支付宝小游戏的发布中的转es5功能,从3.2开始改为IDE内置,不再使用支付宝的转换,避免大文件被支付宝开发工具忽略的问题。
在客户端发布的方面,Windows发布的exe支持自定义窗口标题,并增加了调试日志窗口。安装包的进入效率也进行了优化,缩短了初始化黑屏的时间。
最后,我们将构建任务界面从对话框改为面板,使用起来更加灵活。
其它功能新增与优化
除了以上的重要更新外,beta.1之后还进行了大量其它的功能优化和新增。
01
新增支持包管理器
在之前的版本,资源商店的资源包可以通过资源商店网页来打开并导入,但导入到IDE后,插件或资源会分散在各处,并没有一个本地管理的统一入口。
从3.2正式版开始,不仅可以将购买的商店资源在IDE内导入,还可以对本地插件进行统一安装和管理,通过包管理器安装的本地的插件,包会集中到“packages”目录下,使得管理更加便捷。
(包管理器界面截图)
注意:如上图所示,只有在安装包中存在package.json并配置好相关的字段信息,才支持通过包管理器导入和管理。
02
新增设置启动脚本
LayaAir3.0开始,我们取消了固定的Main入口脚本,入口改为基于启动场景上挂载的自定义组件脚本或UI运行时。
为了让开发者更灵活的控制游戏启动入口,3.2.0正式版开始,增加了启动脚本的设置,允许开发者自定义设置自己的游戏启动入口,用启动脚本来替代启动场景,自行决定场景启动前要处理的逻辑,以及打开场景的时机。
(设置启动脚本的界面截图)
注意:这个脚本需要导出一个名为main的函数。引擎初始化后将直接调用这个函数,不再打开默认场景,由开发者在入口函数中自行决定打开某个场景。
(入口函数示例截图)
03
新增支持场景钩子
3.2.0正式版中还新增支持了场景钩子,用于实现对场景新建对象、载入、保存等特定流程里插入自定义的逻辑。例如,如果希望所有新建的UI节点,轴心都初始化为中心点(0.5,0.5),可以写这样一个插件:
@IEditorEnv.regSceneHook()
export class TestSceneHook implements IEditorEnv.ISceneHook {
//载入场景后调用
onLoadScene() {
}
//保存场景后调用
onSaveScene(scene: IEditorEnv.IGameScene, data: any) {
}
//新建节点对象后调用
onCreateNode(scene: IEditorEnv.IGameScene, node: Laya.Node) {
if (node instanceof Laya.Sprite)
node.anchorX = node.anchorY = 0.5;//初始化锚点
}
//场景中创建组件后调用
onCreateComponent(scene: IEditorEnv.IGameScene, comp: Laya.Component) {
}
}
04
新增预设纹理类型
LayaAir3以前版本的IDE只支持2D编辑,所以默认的纹理都是2D纹理。
但是,LayaAir3支持3D和2D两种编辑模式,而3D与2D纹理类型又不相同,IDE并不知道导入时的纹理是用于3D还是2D,所以默认值为3D使用的纹理,只有使用了LayaAir专属的UI组件命名规则才会被识别为2D纹理。
这就导致了没有使用UI组件命名规则的旧引擎使用者,在使用LayaAir3版本IDE时的误解:在旧版本引擎中显示正常的纹理为什么就在LayaAir3里显示异常了?
因此,3.2.0允许预先设置导入时的纹理类型,如果开发者的项目使用2D纹理的频率更高,可以在“项目设置->编辑->预设值->纹理类型”中,将纹理导入的“默认值”改为“精灵纹理”类型。并且,我们已调整了3.2正式版的2D空项目模板,如果是选择创建2D项目,则默认就设置导入的纹理类型为精灵纹理。
(更改纹理类型的界面)
如果是3D项目,只是会用到2D的UI纹理,我们不建议对导入时的默认纹理类型做出修改。而是需要针对2D纹理,采用UI命名规则,具体规则可以参照官方文档。
05
不再支持Windows8.1以下系统
为保障IDE的稳定性以及功能一致性,3.2开始底层采用新版本Electron,该版本的Chromium不再对Windows 7 / 8 / 8.1进行支持。因此,Windows8.1及以下系统版本的开发者需要升级系统,或者需要停留在LayaAir3.2以下的版本。
06
WebGPU的优化与新增
3.2.0-bata.1开始支持了WebGPU,我们在后续版本不仅修复了若干WebGPU模式下的BUG,也做了很多优化工作。例如,优化了WebGPU渲染管线缓存机制、新增了WebGPU对贴图进行Alpha预乘的渲染流程、新增了WebGPU对2D Spine动画的支持能力等。
07
Spine的优化
除BUG修复外,beta.1之后的版本,仍然对Spine不断进行优化。
首先,废弃了节点方式的Spine小部件,改为使用Spine骨骼动画组件的方式来使用Spine。
然后支持直接从资源面板拖入Spine资源到层级或场景即可自动创建Spine渲染节点和添加Spine动画组件。
还增加了Spine节点销毁检测,避免因异步加载已销毁的节点而引起报错等优化,使得Spine更健壮和易用。
尽管使用方式有所改变,但我们引擎和IDE均做了兼容,3.2以下版本升级上来的时候,IDE会将原节点自动改变为组件的使用方式。
08
其它
-
文本增加了删除线功能
添加引擎组件后,会自动引用对应的引擎库,避免因没有勾选引擎库而导致运行报错
脚本集功能新增支持正确隔离不同脚本集的代码。开发时,不同的脚本集之间的代码可以直接import,IDE在编译时会自动将这些import转化为间接引用,达到分包的目的。
脚本集支持可以选择是否在主脚本集之前加载
提升了引擎运算性能,尤其是在iOS环境下更为明显
对于同时可以屏幕触碰和鼠标操作的笔记本,新增支持两种操作同时生效
隐藏粒子爆发器不支持的销毁数组功能,避免误用导致报错
废弃Sprite的drawToTexture接口增加drawToRenderTexture2D接口
2D时间轴动画面板上,新增支持布尔值属性的修改
2D和3D动画状态机新增支持在涉及多个条件时在AND和OR逻辑之间进行切换
3D节点修改属性面板中的层时,新增可以改变全部子节点层属性值的可选项
videoTexture新增useFrame与updateFrame属性,用于优化视频播放,解决Android微信的自带浏览器视频播放卡顿问题
同一个节点新增支持添加多个相同的组件
优化了Stat状态栏数据获取功能,可在systemTimer中获取Stat数据
支持增加新的资源类型,开发者可以通过插件为IDE增加新的可识别的资源类型。
资源管理不再为名称为node_modules文件夹里的所有文件,以及以“~”结尾的文件或文件夹生成meta文件。
如果开发者选择了使用引擎模块中的wasm库,例如物理和寻路,对不支持wasm的游戏平台,自动切换为对应的纯js库。
在生成源代码映射上增加了是否包含源代码功能。
写在最后
LayaAir3.1分支版本我们维护了十个多月,与此同时,我们也在不断开发与更新3.2的新功能。
本次LayaAir3.2.0正式版的推出,标志着3.2引擎分支的新功能开发阶段已结束,从十月起进入3.2的日常BUG维护与优化更新阶段,以及LayaAir3.3 beta版本大量新特性功能的推出与持续开发阶段。