引擎模块
Author: Charley
LayaAir 引擎采用多模块化设计,其核心目标是在按需加载与高性能之间实现最佳平衡。通过将非必要功能从基础引擎中剥离,有效降低引擎包体体积并提升加载速度;同时依托高度解耦的架构设计,使物理、渲染等高复杂度模块能够独立运行与灵活扩展,从而在资源受限的运行环境中,以更低开销支撑高性能的实时交互体验。
在 IDE 中,引擎模块按照功能属性划分为 2D、3D、通用 及 其他 模块组,便于开发者快速定位与管理所需功能。引擎核心库属于基础依赖,必须使用,因此不包含在可选模块列表中。
模块选项中,新 UI 系统 与 3D 核心模块 默认处于勾选状态。若项目未使用 UI 功能,或为纯 2D 项目,开发者可根据实际需求取消相应模块的勾选,以进一步精简包体并降低运行开销。
对于多数常用功能模块,当开发者在 IDE 中创建或添加相关组件时,IDE 会自动检测当前引擎库的勾选状态,若未启用则会自动勾选对应模块(删除组件时不会自动取消勾选)。
需要注意的是,若开发者仅在代码中使用某些引擎功能,而未通过 IDE 界面创建对应组件,则需手动勾选相应的引擎模块,以确保相关功能正常生效。
1、2D 模块组
2D 模块组包含 2D 项目开发中常用的引擎功能模块,如图 1-1 所示。开发者可根据项目需求按需勾选。
(图1-1)
1.1 UI系统
UI 系统基于精灵体系封装了一套常用的 UI 组件与布局能力,用于提升界面设计与排版效率。
模块选项中,新 UI 系统默认处于勾选状态。为兼容历史项目及旧版使用习惯,开发者也可选择 经典 UI 系统,或 同时启用两套 UI 系统。需要注意的是,同时使用两套 UI 系统将增加最终构建包体体积,如图 1-2 所示。
(图1-2)
1.2 2D灯光
2D 灯光模块用于支持 2D 场景中的光照效果。使用 2D 灯光相关组件时,该模块必须启用。
在 IDE 中添加 2D 灯光组件时,系统会自动勾选对应引擎库,如图 1-3 所示。
(图1-3)
1.3 2D线渲染器
2D 线渲染器模块用于绘制线段与路径效果。
当使用 2D 线渲染器组件时,该模块为必选项,IDE 在添加组件时会自动启用,如图 1-4 所示。
(图1-4)
1.4 2D拖尾
2D 拖尾模块用于实现运动轨迹类的视觉效果。
在使用 2D 拖尾渲染器组件时,需勾选该模块,IDE 会在添加组件时自动完成勾选,如图 1-5 所示。
(图1-5)
1.5 2D粒子
2D 粒子模块用于支持 2D 粒子系统的渲染与播放。
当使用 2D 粒子渲染器组件时,该模块必须启用,IDE 会自动检测并勾选,如图 1-6 所示。
(图1-6)
1.6 瓦片地图
瓦片地图模块用于支持 TileMap 场景结构。
在使用瓦片地图层组件时,该模块为必选项,IDE 添加组件时会自动勾选,如图 1-7 所示。
(图1-7)
1.7 物理系统
LayaAir 默认集成 Box2D 物理引擎,同时提供 JS 版本与 Wasm 版本,开发者可根据需求自行选择,如图 1-8 所示。
(图1-8)
开发者可自行选择JS或Wasm版本,甚至可以自定义2D物理系统(具体可参照文档:自定义物理引擎)
物理系统模块在使用任意物理相关组件时必须启用,IDE 在添加物理组件时会自动勾选对应引擎库,如图 1-9 所示。
(图1-9)
1.8 Spine 动画
Spine 动画模块是基于 Spine 官方 JS 运行库进行适配与性能优化后的运行时实现,目前支持 Spine 3.7–4.2 版本,如图 1-10 所示。
(图1-10)
使用 Spine 渲染器组件时,必须勾选对应的 Spine 动画模块,IDE 会自动完成勾选,如图 1-11 所示。
(图1-11)
需要注意的是,所选 Spine 模块版本必须与 Spine 资源版本保持一致,且不支持多版本 Spine 动画混合使用,否则将导致动画资源无法正常播放。
1.9 导航寻路
导航寻路模块用于支持 2D 场景中的路径搜索与导航逻辑。
当使用导航寻路相关组件时,该模块必须启用,IDE 添加组件时会自动勾选,如图 1-12 所示。
(图1-12)
导航寻路模块同样提供 JS 版本与 Wasm 版本,默认使用 JS 版本,开发者可根据需求进行切换,如图 1-13 所示。
(图1-13)
1.10 内置骨骼动画
内置骨骼动画模块主要用于兼容 LayaAir 历史版本中的骨骼动画方案,即将 Spine 或 DragonBones 动画转换为 .sk 格式使用。
由于该方案对 Spine 与龙骨动画的功能支持相对有限,部分高级特性无法使用,因此 仅建议在兼容历史项目时启用。在新项目中,优先推荐使用 Spine 动画运行时模块。
2、3D 模块组
3D 模块组包含 3D 项目开发中常用的引擎功能模块,如图 2-1 所示。开发者可根据项目需求按需勾选。
(图 2-1)
2.1 3D 核心模块
3D 核心模块是所有 3D 项目必须启用的基础引擎库。
若项目为纯 2D 项目,可取消该模块的勾选,以减少不必要的包体体积与运行开销。
2.2 3D 拖尾
3D 拖尾模块用于支持 3D 场景中的拖尾渲染效果。
在使用 3D 拖尾组件时,该模块为必选项,IDE 在添加组件时会自动检测并勾选,如图 2-2 所示。
(图 2-2)
2.3 3D 粒子
3D 粒子模块用于支持 3D 粒子系统的渲染与播放。
当使用 3D 粒子渲染器组件时,该模块必须启用,IDE 添加组件时会自动完成勾选,如图 2-3 所示。
(图 2-3)
2.4 3D 后处理
3D 后处理模块用于支持相机的后期处理效果。
在启用 3D 相机的后处理功能并创建后处理实例后,该模块为必选项,IDE 会自动勾选对应引擎库,如图 2-4 所示。
(图 2-4)
2.5 物理系统
3D 物理系统模块内置多种主流物理引擎实现,包含 Bullet 与 PhysX,并同时提供 JS 版本与 Wasm 版本,如图 2-5 所示。
(图 2-5)
开发者可根据性能需求与平台环境,自行选择对应物理引擎的 JS 或 Wasm 实现,亦支持自定义 3D 物理系统。(具体可参照文档:自定义物理引擎)
在使用任意 3D 物理相关组件时,该模块必须启用,IDE 添加组件时会自动勾选,如图 2-6 所示。
(图 2-6)
2.6 导航寻路
3D 导航寻路模块用于支持三维场景中的路径搜索与导航功能。
当使用 3D 导航寻路相关组件时,该模块为必选项,IDE 在添加组件时会自动勾选,如图 2-7 所示。
(图2-7)
该模块同样提供 JS 版本与 Wasm 版本,默认使用 JS 版本,开发者可根据实际需求进行切换,如图 2-8 所示。
(图 2-8)
2.7 GLTF 动态解析器
当在 IDE 中直接使用 glTF 资源时,无需启用 GLTF 动态解析器 模块。
仅在通过代码方式动态加载并解析 glTF 模型资源时,才需要勾选该模块,用于支持 glTF 资源的运行时解析。
3、通用模块组
通用模块组包含可同时应用于 2D 与 3D 项目 的通用引擎功能模块。目前,通用模块组仅包含 程序蓝图模块。
3.1 程序蓝图
程序蓝图模块用于支持可视化编程,通过节点化逻辑编辑方式,帮助开发者在无需或仅需少量编写代码的情况下完成逻辑搭建,从而提升开发效率与项目可维护性。
在项目中使用程序蓝图功能时,必须启用该模块。
4、其它模块组
4.1 硬件设备支持
启用硬件设备支持模块后,项目方可调用浏览器提供的相关 Web API,以访问 陀螺仪、加速计、地理位置、摄像头、麦克风 等硬件设备能力。
4.2 Worker异步加载器
Worker 异步加载器模块用于支持 WorkerLoader 的异步资源处理能力,主要用于在 Web Worker 中对图片资源进行解码,从而降低主线程负载并提升运行性能。
4.3 2.x版本文件格式支持
该模块用于支持代码 动态加载 LayaAir 2.x 引擎格式 的 .ls 与 .lh 文件。
需要注意的是,该模块不影响 IDE 中对 LayaAir 2.x 格式资源的使用,即使未勾选该模块,IDE 中仍可正常使用对应格式的资源文件。
4.4 TiledMap支持
TiledMap 支持模块用于在 代码中直接加载和使用第三方 TiledMap 地图资源。
若将 TiledMap 地图资源导入至 IDE,并通过 IDE 内置的 瓦片地图层 组件进行使用,则仅需勾选瓦片地图层对应模块,无需启用该模块。