Unity3D 热更新 2-AssetBundle Manager 的 3 个例子解析(公众号笔记)
ABSTRACT
2018-01 公众号笔记。解析官方 AssetBundle Manager 示例工程的 AssetLoader(加载资源)与 SceneLoader(加载场景)两个场景,说明 Initialize/LoadAssetAsync/LoadLevelAsync 的调用流程,以及依赖资源自动加载的机制。
核心要点
- AssetLoader 示例:空场景挂 Loader 物体,由 LoadAssets.cs 驱动;两个公共变量 assetBundleName 与 assetName 指定包名与资源名,运行后 cube 从 AB 加载进场景。
- 脚本结构:Start() 调 Initialize() 协程(设置 AB 路径、初始化清单、DontDestroyOnLoad 保活加载器),再调 InstantiateGameObjectAsync() 用 AssetBundleManager.LoadAssetAsync() 加载。
- 依赖自动解析:MyCube 依赖 MyMaterial、MyMaterial 依赖 UnityLogo 贴图,脚本只请求 MyCube,全部依赖被 Manager 按 Manifest 自动加载——这是高层 API 相对底层 API 的核心价值。
- AB 路径分环境:编辑器/开发版 Build 指向本地资源服务器;开启 Simulation Mode 后路径设置不生效。
- DontDestroyOnLoad 让加载器跨场景存活,作为复杂项目加载器的基础写法。
- SceneLoader 示例:LoadLevelAsync(场景名, isAdditive) 从 AB 加载场景;场景为空时 Manager 在控制台报错并终止协程。
- 运行示例的前提:必须开启 Simulation Mode 或本地资源服务器二者之一。
关键实体与概念
AssetBundle Manager、LoadAssetAsync、LoadLevelAsync、DontDestroyOnLoad、协程、Manifest、Simulation Mode、isAdditive 场景叠加
关联概念
来源回溯
- 原始文件:
raw/ip/wechat_articles/Unity3D热更新2-Assetbundle Manager的3个例子解析.md(2018-01-18)
时效性评估
- 仍有效:「高层 API 自动解析依赖」「加载器跨场景保活」「异步加载 + 错误兜底」等设计模式在 Addressables/YooAsset 时代依然是同样的思路。
- 已过时:AssetBundle Manager 是 Unity 5 时代的官方演示包,早已废弃;
LoadLevelAsync等 API 已被AssetBundle.LoadFromFileAsync+SceneManager.LoadSceneAsync或 Addressables 的Addressables.LoadAssetAsync取代。学习价值在流程范式,不建议照搬代码。