01-06-认知篇-对比-Addressable Assets深度解析
Addressable Assets 深度解析
篇章:01-认知篇 · 对比
阅读时间:约 25 分钟
前置知识:了解 Unity 基本资源加载方式
一、引言
Addressable Assets 是 Unity 官方推出的高级资源管理方案,它在原生 AssetBundle 的基础上提供了一层高级抽象。本章将深入解析 Addressable Assets 的架构设计、工作原理和最佳实践。
二、Addressable Assets 架构设计
2.1 整体架构
Addressable Assets 的架构可以分为以下几个核心组件:
- ResourceManager:核心管理器,负责资源的加载、卸载、缓存和引用计数
- Provider 系统:插件化加载系统,每种资源类型都有对应的 Provider
- Addressable Asset System:资源管理系统,负责资源的组织、分组和寻址
- Content Update Workflow:内容更新工作流,支持热更新
2.2 Provider 系统详解
Provider 是 Addressable Assets 的核心插件化组件。每种资源类型都有对应的 Provider:
| Provider 类型 | 功能 | 适用场景 |
|---|---|---|
| Asset Provider | 加载 Asset 资源 | 模型、贴图、预制体等 |
| Scene Provider | 加载场景 | 场景资源 |
| Atlas Provider | 加载 Sprite Atlas | 图集资源 |
| Bundle Provider | 加载 AssetBundle | 底层 Bundle 文件 |
Provider 系统的设计允许开发者自定义资源加载逻辑。例如,可以实现一个自定义的 HTTP Provider 来支持特殊的下载策略。
2.3 ResourceManager 工作原理
ResourceManager 是 Addressable Assets 的核心管理器,它负责:
- 资源的加载和卸载
- 引用计数管理
- 缓存管理
- 异步操作调度
ResourceManager 使用引用计数来管理资源的生命周期。每次加载资源时引用计数加 1,每次调用 Release() 时引用计数减 1。当引用计数为 0 时,资源才会被真正卸载。
三、Addressable Assets 使用最佳实践
3.1 资源分组策略
合理的资源分组策略是 Addressable Assets 使用的关键:
- 按功能模块分组:每个功能模块一个 Group
- 按更新频率分组:频繁更新的资源单独分组
- 按加载时机分组:启动时加载的资源与运行时加载的资源分开
3.2 性能优化
- 使用 LZ4 压缩:平衡体积和加载速度
- 预加载关键资源:在游戏启动时预加载关键资源
- 避免频繁加载小资源:将小资源合并到同一个 Bundle 中
四、Addressable Assets 与原生 AB 包的对比
| 维度 | Addressable Assets | 原生 AB 包 |
|---|---|---|
| 依赖管理 | 自动 | 手动 |
| 加载 API | 统一、简易 | 多种、复杂 |
| 版本管理 | 内建 | 需自建 |
| 资源寻址 | Address/Label | 路径 |
| 引用计数 | 自动 | 手动 |
| 性能开销 | 较高 | 较低 |
| 自定义能力 | 受限 | 灵活 |
五、总结
Addressable Assets 是 Unity 官方在资源管理领域的重要尝试。它通过高级抽象简化了 AB 包的使用,提供了自动化的依赖管理和统一的 API。然而,它也带来了性能开销和自定义能力受限等问题。
上一篇:Unity 资源管理痛点分析
下一篇:原生 AssetBundle 工作流深度解析

Addressable Assets 是 Unity 官方推出的高级资源管理方案,它在原生 AssetBundle 的基础上提供了一层高级抽象。本章将深入解析 Addressable Assets 的架构设计、工作原理和最佳实践。
浙公网安备 33010602011771号