CocosCreator 3.x 分包指南:Resources与自定义分包的差异与最佳实践
概述
在CocosCreator 3.x开发中,合理使用分包机制对优化微信小游戏启动速度和运行时性能至关重要。本文将详细解析内置的resources
分包与开发者自定义分包(如home
)的核心区别,并提供实际开发中的决策建议。
核心概念对比
| 特性 | resources分包 (内置Bundle) | 自定义分包 (如home) |
|:---|:---|:---|
| 性质 | CocosCreator引擎内置 | 开发者手动创建 |
| 配置路径 | assets/resources
目录 | 任意配置为Bundle的文件夹 |
| 加载方式 | 使用cc.resources.load
| 使用assetManager.loadBundle
加载整个Bundle后再加载资源 |
| 初始加载 | 启动时自动加载配置信息(但不加载具体资源) | 完全不会自动加载,需要显式代码加载 |
| 优先级 | 固定为8 | 可在1-20之间自定义设置 |
| 典型用途 | 存放需要动态加载的公共资源 | 存放功能模块、场景、懒加载内容 |
运行机制详解
Resources分包行为
游戏启动时,引擎会自动加载resources
目录的资源配置文件(如config.json
),但不会加载具体资源文件。只有当代码中调用cc.resources.load()
时,对应资源才会被实际加载。
自定义分包行为
自定义分包(如home)在游戏启动时完全不会加载任何内容(包括配置信息)。它们只会在显式调用assetManager.loadBundle('bundle-name')
后,才开始下载和加载。
资源量与启动性能关系
实践建议:如何选择资源存放位置
推荐使用自定义分包(Common)的情况
// 对于头像等非立即需要的资源,推荐放在自定义分包中
assetManager.loadBundle('common', (err, bundle) => {
bundle.load('avatars/avatar1', (err, texture) => {
// 使用头像资源
});
});