参考
Asset Bundle 介绍
- 从 v2.4 开始,Creator 正式支持 Asset Bundle 功能。
- 开发者按需求将资源划分在多个 Asset Bundle 中。
- 游戏运行过程中,按需求加载不同的 Asset Bundle,以减少启动时需要加载的资源数量,从而减少首次下载和加载游戏时所需的时间。
- Asset Bundle 可以按需求随意放置,比如可以放在远程服务器、本地、或者小游戏平台的分包中。也可以跨项目复用,用于加载子项目中的 Asset Bundle。
Asset Bundle 的构造
- 代码:文件夹中的所有代码会根据发布平台合并成一个
index.js或game.js的入口脚本文件,并从主包中剔除。 - 资源:文件夹中的所有资源以及文件夹外的相关依赖资源都会放到
import或native目录下。 - 资源配置:所有资源的配置信息包括路径、类型、版本信息都会被合并成一个
config.json文件。
内置 Asset Bundle
internal:存放所有内置资源以及其依赖资源- 优先级: 11
- 简单的讲就是放引擎自己的代码,和引擎自带的资源。
start-scene:如果在 构建发布 面板中勾选了 初始场景分包,则首场景将会被构建到 start-scene 中。- 优先级: 9
- 简单的讲就是放游戏初始场景用到的资源。
resources:存放resources目录下的所有资源以及其依赖资源- 优先级: 8
main:- 优先级: 7
- 存放所有在构建发布面板的参与构建场景中勾选的场景以及其依赖资源。
Bundle 使用流程
- 根据分包名称加载分包。
cc.assetManager.loadBundle(bundleName, callback)。- 这里的加载实际上应该叫:加载分包信息,就是加载
config.json文件了解分包信息。
1.
Cocos 启动时资源加载流程
- 运行main.js
- 读取
setting.js文件当前的分包信息
setting.js文件记录了游戏中有那些分包,
- 加载内置分包
- 就是加载上面内置分包的
config.json。
- 内置分包加载完成后,加载初始场景资源。
注意:
- 有些平台不允许加载远程的脚本文件,例如微信小游戏,在这些平台上,Creator 会将 Asset Bundle 的代码拷贝到 src/scripts 目录下,从而保证正常加载。
- 不同 Asset Bundle 中的脚本建议最好不要互相引用,否则可能会导致在运行时找不到对应脚本。如果需要引用某些类或变量,可以将该类和变量暴露在一个你自己的全局命名空间中,从而实现共享。