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 取代。学习价值在流程范式,不建议照搬代码。