Addressables可寻址资源系统介绍
Unity官方推出的Addressables是一个强大的资源管理系统,它建立在AssetBundle的基础之上,游戏资源(如模型、纹理、音频等)依然打包成AssetBundles,承接其优势,开发者则以异步的方式加载、卸载和管理游戏资源。在支持传统的资源加载方式,还提供了更多贴合实际业务开发涉及的高级功能。其主要功能有:
-
资源打包:
- Addressables将游戏资源(模型、纹理、音频、场景等)成AssetBundles括。
- 打包过程支持自动化,支持根据资源的使用频率和重要性进行智能分组。
-
异步加载:
- 支持异步加载资源,可以在不阻塞主线程的情况下加载资源,提高游戏的流畅性。
- 通过地址或标识符来请求资源,无需关心资源的物理存储位置。
-
依赖管理:
- 自动处理资源之间的依赖关系,确保依赖项正确加载,减少资源缺失或加载乱序的错误。
-
内存管理:
- 使用引用计数来跟踪资源的使用情况,当资源不再被引用时自动卸载,从而有效管理内存。
- 提供内存分析工具,帮助开发者识别和解决潜在的内存泄漏问题。
-
版本控制和更新:
- 支持资源的版本控制,可以轻松管理和部署资源的更新。
- 提供生成更新包的功能,以便玩家下载和安装更新。
-
多平台支持:
- 适用于多个平台,可以根据目标平台的特性自动解析正确的资源路径和格式。
- 简化了跨平台开发和部署的复杂性。
-
本地和远程加载:
- 支持从本地文件系统或远程服务器加载资源。
- 支持缓存机制,以减少重复下载和提高加载速度。
-
资源加密(CN):
- 提供资源加密功能,以增加游戏数据的安全性。
- 防止资源被未经授权的第三方访问或修改。
-
Profiler和调试工具:
- 集成Unity Profiler,提供资源加载和卸载的详细分析数据,帮助开发者定位和优化性能瓶颈。
-
可扩展性:
- 其架构允许开发者通过编写自定义代码来扩展其功能。
- 可以与其他Unity插件和第三方服务集成,以满足特定的项目需求。
Addressables与AssetBundles
AssetBundles是Unity中一种传统的资源打包方式,开发者可以将多个资源(如模型、纹理、音频等)打包成一个AssetBundle,并通过Unity引擎提供的API进行加载和管理。支持开发者将资源分组,按需加载,从而降低游戏的初始加载时间和内存占用。
Addressables则是Unity中更高级的资源管理系统,它在AssetBundles的基础上结合业务发展提供了更多的功能。它采用一种基于地址的资源加载方式,开发者只需要知道资源的地址(或标识符),就可以从任意位置加载资源,而无需关心资源实际存储在哪里。这使得资源的加载更加灵活和高效。它与AssetBundles相比的优势在于:
- 更高级的依赖管理:自动处理资源之间的依赖关系,允许开发者更灵活地定义和管理这些依赖,而AssetBundles需要开发者手动管理依赖关系,这可能导致维护困难和潜在的错误。
- 智能的内存管理:采用引用计数来跟踪和管理资源的内存占用。当资源不再需要时,系统会自动卸载它们,从而有效地管理内存。而AssetBundles的内存管理需要开发者手动介入,可能更容易出现内存泄漏或资源浪费。
- 更灵活的加载策略:支持从任意位置加载资源,无论是本地还是远程。同时开发者可以定制加载过程,例如通过DI(依赖注入)来插入自定义的加载逻辑。AssetBundles通常需要从指定的bundle包中加载资源,这限制了加载的灵活性。
- 更好的版本控制和更新机制:为资源的版本控制和更新提供了更高级的工具和支持。这使得开发者能够更轻松地管理和部署资源的更新。
- 更强大的分析工具:提供了丰富的分析工具,如资源加载情况的分析器,帮助开发者更好地理解和优化资源的加载和卸载过程。
- 更易于扩展和维护:Addressables的架构和设计使得它更易于扩展和维护。开发者可以通过编写自定义代码来扩展系统的功能,以满足特定的项目需求。
插件安装和介绍
点击 Window -> Package Manager 选择左上方Packages:Unity Registry查看所有unity插件,找到Addressables选中,点击右侧详情页中右下角Install按钮进行安装。
安装完毕后点击 Window -> Asset Management -> Addressables -> Groups 打开操作窗口
如果项目之前未使用,则会出现如下窗口内容,需要点击中间按钮进行创建Addressables相关文件夹以及初始配置文件,创建的根目录AddressableAssetsData在Asset目录之下,因为其配置文件也会默认打入AssetBundle。