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 工作流深度解析

相关推荐
SmalBox15 小时前
05-08-源码-缓存系统与内存管理
unity3d·游戏开发
雪庭2 天前
OCCT OCAF 实战
unity3d
SmalBox2 天前
05-07-源码-引用计数与资源生命周期
unity3d·游戏开发
雪庭2 天前
用 OCCT 造一只啤酒瓶:完整实录
unity3d
SmalBox3 天前
05-06-源码-异步操作体系(OperationSystem)
unity3d·游戏开发
侑虎科技3 天前
深度分析屏幕空间反射算法以及在URP中的实现(一)
unity3d
郝学胜-神的一滴4 天前
游戏设计:原型与开发 08:我们到底在为谁做游戏
程序人生·游戏·游戏引擎·游戏开发·游戏策划
SmalBox4 天前
05-05-源码-资源加载与Provider体系
unity3d·游戏开发
SmalBox5 天前
05-04-源码-资源定位系统
unity3d·游戏开发
Mikko75 天前
用 Java 复刻了高中时在塞班上玩的「熔岩矿车」:纯 Swing、零依赖、没有一张图片,一个 jar 双击就能玩
java·游戏开发·swing