本文参考官方文档:https://docs.unity3d.com/cn/current/Manual/AssetBundlesIntro.html
管理 AssetBundle
上一篇我们已经知道了AssetBundle的基本工作流程以及构建和加载,是时候讨论如何管理所有这些已加载的 AssetBundle 了。
AssetBundle Manager 是 Unity官方 制作的一个工具,用于进一步简化 AssetBundles 的使用。它有许多功能,包括依赖项管理,加载资源,加载场景,加载变体等。
我们可以从 Bitbucket 代码仓库 来下载Unity 官方的 AssetBundleDemo。下载和导入 AssetBundle Manager 软件包不仅会添加新的 API 调用来加载和使用 AssetBundle,还会添加一些 Editor 功能来简化工作流程。可以在 Assets 菜单选项下找到此功能。
模拟模式
启用模拟模式允许 AssetBundle Manager 使用 AssetBundle,但不需要实际构建捆绑包本身。编辑器会查看已分配到 AssetBundle 的资源并直接使用资源,而不实际从 AssetBundle 中提取资源。
使用模拟模式的主要优点是可以修改、更新、添加和删除资源,而无需每次都重新构建和部署 AssetBundle。
值得注意的是,AssetBundle 变体不适用于模拟模式。如果需要使用变体,可以选择本地 AssetBundle 服务器 (Local AssetBundle Server)。
下面的操作都是在模拟模式下进行的。需将 资源 -> AssetsBundles -> Simulation Mode 打上对号
本地 AssetBundle 服务器
AssetBundle Manager 还可以启动本地 AssetBundle 服务器,该服务器可用于在编辑器或本地构建(包括移动端)中测试 AssetBundle。
要让本地 AssetBundle 服务器工作,规定必须在项目的根目录中创建一个名为 AssetBundles 的文件夹,该文件夹与 Assets 文件夹应处于同一级别。
创建文件夹后,需要将 AssetBundle 构建到此文件夹。从菜单选项中选择 Build AssetBundles
AssetBundleManager的使用
此函数将加载 AssetBundleManifest 对象。开始使用 AssetBundle Manager 在资源中加载此对象之前,需要首先调用此对象。
IEnumerator Start()
{
yield return StartCoroutine(Initialize());
}
IEnumerator Initialize()
{
DontDestroyOnLoad(gameObject);
IntializeSourceURL(); // 初始化服务器地址
var request = AssetBundleManager.Initialize(); //初始化 AssetBundle Manager
if (request != null)
yield return StartCoroutine(request);
}
void InitializeSourceURL(){
// If ODR is available and enabled, then use it and let