Unity Addressables 介绍(一)

844 阅读5分钟

Addressables可寻址资源系统介绍

Unity官方推出的Addressables是一个强大的资源管理系统,它建立在AssetBundle的基础之上,游戏资源(如模型、纹理、音频等)依然打包成AssetBundles,承接其优势,开发者则以异步的方式加载、卸载和管理游戏资源。在支持传统的资源加载方式,还提供了更多贴合实际业务开发涉及的高级功能。其主要功能有:

  1. 资源打包

    • Addressables将游戏资源(模型、纹理、音频、场景等)成AssetBundles括。
    • 打包过程支持自动化,支持根据资源的使用频率和重要性进行智能分组。
  2. 异步加载

    • 支持异步加载资源,可以在不阻塞主线程的情况下加载资源,提高游戏的流畅性。
    • 通过地址或标识符来请求资源,无需关心资源的物理存储位置。
  3. 依赖管理

    • 自动处理资源之间的依赖关系,确保依赖项正确加载,减少资源缺失或加载乱序的错误。
  4. 内存管理

    • 使用引用计数来跟踪资源的使用情况,当资源不再被引用时自动卸载,从而有效管理内存。
    • 提供内存分析工具,帮助开发者识别和解决潜在的内存泄漏问题。
  5. 版本控制和更新

    • 支持资源的版本控制,可以轻松管理和部署资源的更新。
    • 提供生成更新包的功能,以便玩家下载和安装更新。
  6. 多平台支持

    • 适用于多个平台,可以根据目标平台的特性自动解析正确的资源路径和格式。
    • 简化了跨平台开发和部署的复杂性。
  7. 本地和远程加载

    • 支持从本地文件系统或远程服务器加载资源。
    • 支持缓存机制,以减少重复下载和提高加载速度。
  8. 资源加密(CN)

    • 提供资源加密功能,以增加游戏数据的安全性。
    • 防止资源被未经授权的第三方访问或修改。
  9. Profiler和调试工具

    • 集成Unity Profiler,提供资源加载和卸载的详细分析数据,帮助开发者定位和优化性能瓶颈。
  10. 可扩展性

    • 其架构允许开发者通过编写自定义代码来扩展其功能。
    • 可以与其他Unity插件和第三方服务集成,以满足特定的项目需求。

Addressables与AssetBundles

AssetBundles是Unity中一种传统的资源打包方式,开发者可以将多个资源(如模型、纹理、音频等)打包成一个AssetBundle,并通过Unity引擎提供的API进行加载和管理。支持开发者将资源分组,按需加载,从而降低游戏的初始加载时间和内存占用。

Addressables则是Unity中更高级的资源管理系统,它在AssetBundles的基础上结合业务发展提供了更多的功能。它采用一种基于地址的资源加载方式,开发者只需要知道资源的地址(或标识符),就可以从任意位置加载资源,而无需关心资源实际存储在哪里。这使得资源的加载更加灵活和高效。它与AssetBundles相比的优势在于:

  1. 更高级的依赖管理:自动处理资源之间的依赖关系,允许开发者更灵活地定义和管理这些依赖,而AssetBundles需要开发者手动管理依赖关系,这可能导致维护困难和潜在的错误。
  2. 智能的内存管理:采用引用计数来跟踪和管理资源的内存占用。当资源不再需要时,系统会自动卸载它们,从而有效地管理内存。而AssetBundles的内存管理需要开发者手动介入,可能更容易出现内存泄漏或资源浪费。
  3. 更灵活的加载策略:支持从任意位置加载资源,无论是本地还是远程。同时开发者可以定制加载过程,例如通过DI(依赖注入)来插入自定义的加载逻辑。AssetBundles通常需要从指定的bundle包中加载资源,这限制了加载的灵活性。
  4. 更好的版本控制和更新机制:为资源的版本控制和更新提供了更高级的工具和支持。这使得开发者能够更轻松地管理和部署资源的更新。
  5. 更强大的分析工具:提供了丰富的分析工具,如资源加载情况的分析器,帮助开发者更好地理解和优化资源的加载和卸载过程。
  6. 更易于扩展和维护:Addressables的架构和设计使得它更易于扩展和维护。开发者可以通过编写自定义代码来扩展系统的功能,以满足特定的项目需求。

插件安装和介绍

点击 Window -> Package Manager 选择左上方Packages:Unity Registry查看所有unity插件,找到Addressables选中,点击右侧详情页中右下角Install按钮进行安装。 image.png

安装完毕后点击 Window -> Asset Management -> Addressables -> Groups 打开操作窗口 image.png

如果项目之前未使用,则会出现如下窗口内容,需要点击中间按钮进行创建Addressables相关文件夹以及初始配置文件,创建的根目录AddressableAssetsData在Asset目录之下,因为其配置文件也会默认打入AssetBundle。 image.png

image.png